Promise.prototype.done

Posted star

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise.prototype.done相关的知识,希望对你有一定的参考价值。

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

以上是关于Promise.prototype.done的主要内容,如果未能解决你的问题,请参考以下文章

代码片|水波纹

代码片--练习匿名内部类

一个简单的时间片轮转内核代码的分析(课程作业)

markdown 放代码片

代码片-下拉树实现

用java给html文件添加必要的控制html代码片