콜백
콜백
함수는 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);
}
}
err
및 data
는 더 많은 중복 코드를 추가하는 모든 콜백을 확인해야 합니다. 당신이해야 할 일을 상상해보십시오비동기 콜백 시퀀스 A -> B -> C.
콜백의 신뢰 문제
특정 비동기 작업을 수행하고 콜백이 중요한 몇 가지를 실행한다고 게시하는 타사 유틸리티가 있다고 상상해보십시오.
물건.
thridParty.doAction(function () {
// Important stuff for your app goes here which needs to be executed
})
타사 유틸리티에 버그가 있고 아마도 다른 가능성을 생각해야 하는 경우 어떻게 해야 합니까?
콜백 지옥과 관련된 위의 신뢰 문제와 오류 처리를 위한 더 많은 상용구 코드는 확장의 병목 현상입니다.
응용 프로그램. 이는 차세대 비동기식 처리 방식으로 이어집니다
Promises
.
Reference
이 문제에 관하여(콜백), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yo08315171/callbacks-5936텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)