이것은 여러 가지 이유로 나타날 수 있으며 게시물에서 어떤 것을 결정하는 것은 불가능합니다. 그래서 미래의 독자들에게 도움이 -의 위의 시나리오에서 잘못 될 수 있는지 알아 보자, 그런
function a() {
console.log("a called"); // if this doesn't log, you're redefining 'a'
return Promise.all([promise1, promise2]).then((results) => {
console.log("In .all"); // if this isn't called, promise1 or promise2 never resolve
return promise3(results);
}).tap(() =>
console.log("Promise 3 fn resolved") // if this doesn't log, promise3 never resolves
});
}
우리 then
핸들러 :
let r = a().then((result) => {
console.log('result', result); // this logs together with promise 3 fn
}); // bluebird automatically adds a `.catch` handler and emits unhandledRejection
setTimeout(() => {
// see what `r` is after 30 seconds, if it's pending the operation is stuck
console.log("r is", r.inspect());
}, 30000);
을
가의 코드에 다음 조정을 만들자
그러면 잘못 될 가능성이있는 모든 사례에 대해 충분히 알려야합니다.
Promise
어딘가에 resolve
또는 reject
을 절대 호출하지 않기 때문에 약속 중 하나가 해결되지 않습니다.
(블루 버드 특정 시나리오에서이에 대해 경고합니다 - 당신이에 경고를 가지고 있는지 확인)
될 수 있습니다 또 다른 시나리오이 취소 -하지만 나는 당신이이 켜져 있지 않습니다 있으리라 믿고있어.
해피 코딩.
정확히'promise3'은 무엇입니까? – Boaz
@Boaz DB 쿼리에서 약속을 반환하는 함수입니다. '.then'을 추가하면 질의 결과를 보여줍니다 ('promise3'가 잘 작동 함을 의미합니다) – Hadi