콜백 체인을 위해 jquery와 유사한 '성공'및 '실패'함수를 구현하는 방법

PaolaJ.

나는 자바 스크립트를 처음 접했고 함수 실행을 연결해야하지만 성공과 실패에 반응하는 기능이 다릅니다. 함수 배열은 매개 변수로 가져오고 이전 결과는 성공시 다음 체인에 대한 입력 매개 변수이며 오류가 발생하면 경고 / 로그 동작을 정의 할 수 있습니다. 나는 jquery가 GET ajax 메소드 성공과 실패에 대한 예를 들어주는 방식을 좋아합니다. 내부 함수가 해당 이벤트를 발생시키는 방법, 이것이 자바 스크립트에서 어떻게 구현됩니까?

m59

여기 에서 두 솔루션의 라이브 데모를 확인 하십시오 (클릭).

이제 Promise는 콜백이 아닌 최선의 접근 방식으로 간주됩니다. 콜백은 시작하기 쉽고 나중에 약속에 대해 이야기하는 것이 더 쉽기 때문에 시작하겠습니다.

객체 매개 변수가있는 기본 콜백 :

//change this to true or false to make the function "succeed" or "fail"
//var flag = false;
var flag = true;

//this is the function that uses "success" and "error"
function foo(params) {
  //some condition to determine success or failure
  if (flag) {
    //call the success function from the passed in object
    params.success();
  }
  else {
    //call the error function from the passed in object
    params.error();
  }
}

//function "foo" is called, passing in an object with success and error functions
foo({
  success: function() {
    console.log('success!');
  },
  error: function() {
    console.log('error!');
  }
});

콜백을 실행하기 전에 전달되었는지 확인하십시오.

완전한 솔루션의 경우 해당 속성을 호출하기 전에 해당 속성이 존재하는지 확인해야합니다. 성공 및 오류 함수가 전달 된 경우에만 호출하십시오.

그렇게하는 방법은 다음과 같습니다.

if (flag) {
  //the function is only fired if it exists
  params.success && params.success();
}

개별 매개 변수로 전달 된 콜백 :

개체에 전달할 필요가 없습니다. 함수가 개별 매개 변수를 받아들이도록 할 수 있습니다.

function foo(success, error) {
  if (flag) {
    success && success();
  }
  else {
    error && error();
  }
}

foo(
  function() {
    console.log('success!');
  }, 
  function() {
    console.log('error!');
  }
);

개별적으로 또는 객체로 전달 된 콜백 :

함수가 전달 된 내용을 기반으로 객체의 개별 매개 변수 또는 함수를 사용하도록 할 수도 있습니다. 첫 번째 매개 변수가 함수인지 객체인지 확인하고 그에 따라 사용하면됩니다.

function foo(success, error) {
  if (arguments.length === 1 && typeof arguments[0] === 'object') {
    var params = arguments[0];
    success = params.success;
    error = params.error;
  }
  if(flag) {
    success && success();
  }
  else {
    error && error();
  }
}

foo(function() {
  console.log('success');
});

foo({
  success: function() {
    console.log('success!');
  }
});

약속! 만세!

내가 말했듯이, 나는 비동기 함수를 다루는 데 매우 좋은 promise를 사용하는 것을 매우 선호합니다. 이를 위해서는 promise 라이브러리 또는 ES6 JavaScript가 필요합니다. 이것이 jQuery로 보이는 방식입니다. 대부분의 라이브러리는 유사합니다.

function bar() {
  var deferred = new $.Deferred();

  if (flag) {
    //if you resolve then, the first "then" function will fire
    deferred.resolve();
  }
  else {
    //if you reject it, the second "then" function will fire
    deferred.reject();
  }

  return deferred.promise();
}

//since "bar" returns a promise, you can attach a "then" function to it
//the first function will fire when the promise is resolved
//the second function will fire when the promise is rejected
bar().then(function() {
  console.log('bar success!'); 
}, 
function() {
  console.log('bar error!');
});

JavaScript ES6 Promise 사용 :

function bar() {
  return new Promise(function(resolve, reject) {
    if (flag) {
      resolve()
    }
    else {
      reject();
    }
  })
}

약속은 처음에는 이해하기 어려울 수 있습니다. 머리를 감싸는 데 도움이되는 좋은 튜토리얼이 많이 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

방화벽을 테스트하기 위해 ansible wait_for 모듈에서 성공 및 실패에 대한 디버그 메시지를 인쇄하는 방법.?

분류에서Dev

Mongoose 컨트롤러를 테스트하기 위해 Jasmine 및 NodeJ를 사용하여 콜백 함수 내부의 로직을 테스트하는 방법

분류에서Dev

P / Invoke와 함께 콜백 및 힙 객체를 사용하는 안전한 방법

분류에서Dev

성공 및 실패 콜백을 모두 실행하는 corodva 파일 읽기

분류에서Dev

jQuery-UI에서 크기 조정을위한 콜백 함수를 정의하는 방법

분류에서Dev

API와 함께 jsonp 콜백 함수를 사용하는 방법

분류에서Dev

java.util 만 사용하여 "switch"및 "if"문없이 스위치와 유사한 구성을 구현하는 Java 8 기능적 방법은 무엇입니까?

분류에서Dev

사용자가 식별을 위해 모든 문자를 입력하도록 강제하는 방법 (현재 자동 완성으로 인해 실패 함)

분류에서Dev

콜백을위한 커스텀 함수 생성 방법-Tensorflow

분류에서Dev

mysql 쿼리를 위해 module.export 함수에서 콜백을 사용하는 방법-nodejs, express

분류에서Dev

Angular.js에서 .then 함수 및 콜백 성공 함수를 연결하는 방법

분류에서Dev

콜백으로 jquery 함수를 생성하는 방법

분류에서Dev

this와 $ (this) 및 jQuery를 사용하는 이벤트의 콜백 함수의 차이점

분류에서Dev

Angularjs : 공급자의 서비스를 사용하는 콜백을 구성하는 좋은 방법

분류에서Dev

콜백 함수를 사용하는 경우 Angular $ resources 및 "clean"개체를 얻는 방법

분류에서Dev

콜백 객체와 호출자가 콜백을 사용하여 결과를 위임하는 메서드를 모의하는 방법

분류에서Dev

iOS : 동일한 결과 / 오류 세트를 반환하는 두 API 콜백에 대해 공유 메서드를 구현하는 방법

분류에서Dev

매개 변수화 된 특성의 하위 유형을 가져와 반환하는 스칼라 제네릭 함수를 구현하는 방법

분류에서Dev

$ promise 콜백에서 성공 및 오류 함수를 더 쉽게 추가 할 수있는 방법

분류에서Dev

특정 문자가 포함 된 입력의 유효성을 검사하기 위해 html5 패턴을 구현하는 방법은 무엇입니까?

분류에서Dev

SDwebimage에서 성공 및 실패 블록을 사용하는 방법

분류에서Dev

다양한 유형의 객체를 지원해야하는 RealmList 구현 방법 및 모범 사례

분류에서Dev

Atlassian Design Guidelines License를 수락하지 않고 Atlaskit을 사용하기 위해 npm 패키지에 대한 대체 구현을 사용하는 방법

분류에서Dev

href와 title 속성을 모두 설정하고 동시에 콜백 함수를 제공하는 방법은 무엇입니까?

분류에서Dev

종속 함수 체인에서 JavaScript 콜백을 구성하는 방법은 무엇입니까?

분류에서Dev

.each 루프 내부의 Jquery 콜백이 발생한 후 함수를 실행하는 방법

분류에서Dev

위임 패턴을 구현하기 위해 @FieldValue와 함께 ByteBuddy @Pipe 주석을 사용하는 방법은 무엇입니까?

분류에서Dev

포스트 백 후 특정 패널을 활성화하기 위해 특정 JavaScript를 실행하는 방법

분류에서Dev

순차 실행을 위해 맵 함수 내에서 비동기 및 대기를 사용하는 방법

Related 관련 기사

  1. 1

    방화벽을 테스트하기 위해 ansible wait_for 모듈에서 성공 및 실패에 대한 디버그 메시지를 인쇄하는 방법.?

  2. 2

    Mongoose 컨트롤러를 테스트하기 위해 Jasmine 및 NodeJ를 사용하여 콜백 함수 내부의 로직을 테스트하는 방법

  3. 3

    P / Invoke와 함께 콜백 및 힙 객체를 사용하는 안전한 방법

  4. 4

    성공 및 실패 콜백을 모두 실행하는 corodva 파일 읽기

  5. 5

    jQuery-UI에서 크기 조정을위한 콜백 함수를 정의하는 방법

  6. 6

    API와 함께 jsonp 콜백 함수를 사용하는 방법

  7. 7

    java.util 만 사용하여 "switch"및 "if"문없이 스위치와 유사한 구성을 구현하는 Java 8 기능적 방법은 무엇입니까?

  8. 8

    사용자가 식별을 위해 모든 문자를 입력하도록 강제하는 방법 (현재 자동 완성으로 인해 실패 함)

  9. 9

    콜백을위한 커스텀 함수 생성 방법-Tensorflow

  10. 10

    mysql 쿼리를 위해 module.export 함수에서 콜백을 사용하는 방법-nodejs, express

  11. 11

    Angular.js에서 .then 함수 및 콜백 성공 함수를 연결하는 방법

  12. 12

    콜백으로 jquery 함수를 생성하는 방법

  13. 13

    this와 $ (this) 및 jQuery를 사용하는 이벤트의 콜백 함수의 차이점

  14. 14

    Angularjs : 공급자의 서비스를 사용하는 콜백을 구성하는 좋은 방법

  15. 15

    콜백 함수를 사용하는 경우 Angular $ resources 및 "clean"개체를 얻는 방법

  16. 16

    콜백 객체와 호출자가 콜백을 사용하여 결과를 위임하는 메서드를 모의하는 방법

  17. 17

    iOS : 동일한 결과 / 오류 세트를 반환하는 두 API 콜백에 대해 공유 메서드를 구현하는 방법

  18. 18

    매개 변수화 된 특성의 하위 유형을 가져와 반환하는 스칼라 제네릭 함수를 구현하는 방법

  19. 19

    $ promise 콜백에서 성공 및 오류 함수를 더 쉽게 추가 할 수있는 방법

  20. 20

    특정 문자가 포함 된 입력의 유효성을 검사하기 위해 html5 패턴을 구현하는 방법은 무엇입니까?

  21. 21

    SDwebimage에서 성공 및 실패 블록을 사용하는 방법

  22. 22

    다양한 유형의 객체를 지원해야하는 RealmList 구현 방법 및 모범 사례

  23. 23

    Atlassian Design Guidelines License를 수락하지 않고 Atlaskit을 사용하기 위해 npm 패키지에 대한 대체 구현을 사용하는 방법

  24. 24

    href와 title 속성을 모두 설정하고 동시에 콜백 함수를 제공하는 방법은 무엇입니까?

  25. 25

    종속 함수 체인에서 JavaScript 콜백을 구성하는 방법은 무엇입니까?

  26. 26

    .each 루프 내부의 Jquery 콜백이 발생한 후 함수를 실행하는 방법

  27. 27

    위임 패턴을 구현하기 위해 @FieldValue와 함께 ByteBuddy @Pipe 주석을 사용하는 방법은 무엇입니까?

  28. 28

    포스트 백 후 특정 패널을 활성화하기 위해 특정 JavaScript를 실행하는 방법

  29. 29

    순차 실행을 위해 맵 함수 내에서 비동기 및 대기를 사용하는 방법

뜨겁다태그

보관