콜백

콜백



함수는 JS의 일급 객체입니다. 즉, 함수를 다른 함수에 인수로 전달할 수 있고
필요에 따라 실행하십시오.
비동기 콜백은 종종 비동기 작업 후 프로그램의 연속으로 사용됩니다.
콜백은 JS 프로그램에서 가장 일반적인 비동기 방식입니다(ES6이 약속하기 전).

리소스를 가져오는 ajax 유틸리티가 있고 추가 요청에 필요한 결과를 기반으로 한다고 상상해 보십시오.

// Nested callbacks
listen("click", function (event) {
  ajax("http://example.com/first", function (respone1) {
    if (response1) {
      ajax("http://example.com" + response1, function (response2) {
        console.log("Response", response1 + response2)
      })
    }
  })
})


콜백의 문제점 중 하나는 쉽게 중첩된 콜백으로 끝나거나 때로는
콜백 지옥. 그러나 콜백 지옥에는 중첩된 콜백보다 더 많은 것이 있습니다. 순차적인 방식은 상상하기 어렵다
콜백을 사용하는 흐름의 경우, 비동기 콜백이 더 많을 때 항상 불안정합니다.

doA(function () {
  doC();

  doD(function () {
    doF();
  });

  doE();

});

doB();


출력: A -> B -> C -> D -> E -> F(위의 모든 함수가 비동기인 경우)

doA() 또는 doD()가 비동기가 아니면 어떻게 됩니까? 출력은 A -> C -> D -> F -> E입니다.

실패 처리



콜백에서 오류 처리를 처리하는 방법에 대한 표준은 없습니다. 소수의 라이브러리(NodeJs API)가 첫 번째 인수를 따릅니다err.
접근 후 실제 반응.

function response(err, data) {
  if (err) {
    console.error(err);
  } else {
    console.log(data);
  }
}


  • 각 팀 또는 라이브러리는 콜백 처리 및 오류 처리 방법에 대한 서로 다른 규칙을 따릅니다.
  • errdata는 더 많은 중복 코드를 추가하는 모든 콜백을 확인해야 합니다. 당신이해야 할 일을 상상해보십시오
    비동기 콜백 시퀀스 A -> B -> C.
  • 오류 처리 및 중복 검사와 함께 중첩하면 콜백을 지옥으로 만듭니다
  • .

    콜백의 신뢰 문제



    특정 비동기 작업을 수행하고 콜백이 중요한 몇 가지를 실행한다고 게시하는 타사 유틸리티가 있다고 상상해보십시오.
    물건.

        thridParty.doAction(function () {
      // Important stuff for your app goes here which needs to be executed  
    })
    
    


    타사 유틸리티에 버그가 있고 아마도 다른 가능성을 생각해야 하는 경우 어떻게 해야 합니까?
  • 콜백이 호출되지 않는 경우
  • 콜백이 두 번 이상 호출되는 경우
  • 오류/예외는 어떻게 처리됩니까? 삼켜지거나 콜백으로 전파됩니까

  • 콜백 지옥과 관련된 위의 신뢰 문제와 오류 처리를 위한 더 많은 상용구 코드는 확장의 병목 현상입니다.
    응용 프로그램. 이는 차세대 비동기식 처리 방식으로 이어집니다Promises.

    좋은 웹페이지 즐겨찾기