共计 470 个字符,预计需要花费 2 分钟才能阅读完成。
promise 设计规格并没有对 Promise.prototype.done 做出任何规定, 因而在应用的时候,你能够应用已有类库提供的实现,也能够本人去实现。
作用
无论 Promise 对象的回调链以 then 办法还是 catch 结尾,只有最初一个办法抛出谬误,就有可能无奈捕捉到(因为 Promise 外部的谬误不会冒泡到全局),因而,须要提供一个 done 办法,它总是处于回调链的尾端(被执行),保障抛出任何可能呈现的谬误;
示例代码
"use strict";
if (typeof Promise.prototype.done === "undefined") {Promise.prototype.done = function (onFulfilled, onRejected) {this.then(onFulfilled, onRejected).catch(function (error) {setTimeout(function () {throw error;}, 0);
});
};
}
done 有以下两个特点
1、done 中呈现的谬误会被作为异样抛出
2、终结 Promise chain
正文完