我正在为 Javascript 承诺使用“延迟”模式,它允许我将承诺返回给调用函数,然后在稍后的时间,在某些条件下,解决或拒绝该承诺。
正如您在我提供的代码中所看到的,除了在浏览器中出现Unhandled Rejection错误之外,一切都按预期工作。
function promiseGenerator() {
const deferred = {};
const promise = new Promise((resolve, reject) => {
deferred.resolve = resolve;
deferred.reject = reject;
});
deferred.promise = promise;
return deferred;
}
const generatedPromise = promiseGenerator();
generatedPromise.promise.then(res => {
console.log("A string deferred resolved!", res);
});
generatedPromise.promise.then().catch(e => {
console.log("This is the catch", e);
});
generatedPromise.reject("Oh no");
我期待This is the catch Oh no在控制台中看到- 我确实做到了。但是为什么我会收到错误消息?显然,我的拒绝是被处理!
请注意,我不想(必然)想要将捕获链接到,then因为我可能想在代码中的其他地方单独添加这个捕获
这是一个 Codesandbox 链接 https://codesandbox.io/embed/deferred-promise-catch-vanilla-pjor9
一只甜甜圈
狐的传说
翻阅古今
相关分类