如何在JavaScript中拒绝一个可能的对象?

时间:2015-10-25 14:09:48

标签: javascript promise

我知道thenablethen方法,但Promise如何知道对象的状态已被拒绝?

实施例: 在这里,$ .ajax是一个很好的,如果你这样做,可以作为Promise鸭子:

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

但是这个表达式返回的promise是如何处理catch的?

1 个答案:

答案 0 :(得分:1)

Promises/A+ then method确实需要两个回调 - 一个用于履行,一个用于拒绝案例。你会not use the .then(…).catch(…) pattern but .then(…, …) - 第二个回调是“抓住案例”(注意.catch(…)只是.then(null, …))。

这就是可以同化的方式 - 当第二个回调被调用时,他们拒绝带有错误的承诺。例如:

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