关于promise:Promiseprototypedone

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理