我知道thenable
有then
方法,但Promise
如何知道对象的状态已被拒绝?
实施例: 在这里,$ .ajax是一个很好的,如果你这样做,可以作为Promise鸭子:
Promise.resolve($.ajax({ url: '/test' }))
但是这个表达式返回的promise是如何处理catch
的?
答案 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);
}
});