如何在JavaScript中拒绝一个thenable对象?



我知道一个thenablethen的方法,但是Promise怎么知道当时被反对的状态已经移动到拒绝?

的例子:在这里,美元。ajax是一个可启用的,如果你这样做,它可以作为一个承诺被ducktyped:

Promise.resolve($.ajax({ url: '/test' }))

但是这个表达式返回的承诺如何处理catch的情况呢?

一个Promises/A+ then方法确实接受两个回调——一个用于实现,一个用于拒绝。您将不使用.then(…).catch(…)模式,而是使用.then(…, …) -第二个回调是"catch case"(注意.catch(…)只是.then(null, …))。

这就是enable被吸收的方式——当第二个回调被调用时,它们拒绝带有错误的承诺。例子:

var rejectingPromise = Promise.resolve({
    then: function(onSuccess, onError) {
        onError(new Error);
    }
});

最新更新