비동기 시나리오를 처리할 때는 악성 콜백으로 인한 노드 충돌을 방지하는 것이 중요합니다. 이 기사에서는 이 문제를 해결하기 위해 Bluebird Promise를 사용하는 모범 사례를 살펴보겠습니다.
다음 시나리오를 고려하세요.
function getPromise() { return new Promise((done, reject) => { setTimeout(() => { throw new Error("AJAJAJA"); }, 500); }); } ...
setTimeout 내에서 예외를 발생시킴으로써 Bluebird의 오류 처리 메커니즘을 우회하고 프로그램을 중단시킵니다. 그러나 setTimeout 이전에 예외가 발생하면 Bluebird는 이를 성공적으로 캡처합니다.
function getPromise() { return new Promise((done, reject) => { throw new Error("Oh no!"); setTimeout(() => { console.log("hihihihi"); }, 500); }); } ...
이는 Promise가 비동기 콜백에서 예외를 가로채지 않는다는 것을 보여줍니다. 대신 생성자 콜백 내에서만 오류를 처리하거나 콜백을 포착합니다.
노드 충돌을 방지하려면 사용자 정의 비동기 콜백에서 오류를 발생시키지 마십시오. 대신 주변 약속을 거부하십시오. 다음 수정 사항을 고려해보세요.
function getPromise() { return new Promise((done, reject) => { setTimeout(() => { done(); }, 500); }).then(() => { console.log("hihihihi"); throw new Error("Oh no!"); }); } ...
then을 사용하여 비동기 작업을 래핑하면 이제 Bluebird 콜백 내에서 오류를 처리할 수 있습니다.
위 내용은 Bluebird Promises는 Node.js의 비동기 예외 처리 문제를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!