原生promise无法支持finally和done,如何实现?

Promise.prototype.done = function(onResolved, onRejected){
    this
        .then(onResolved, onRejected)
        .catch(function(err){
            setTimeout(() => { throw err}, 0); //抛出一个全局错误
        })
}
var p = ()=>new Promise((resolve, reject) => resolve('success'));
p()
  .then(data => {console.log(data); x+1;})
  .catch(err => {console.log(err.message); y+2;})
  .then(data => console.log(data))
  .done();
Promise.prototype.finally = function (callback) {
    'use strict';
    let P = this.constructor;
    return this.then(
        value => P.resolve(callback(value)),
        err => P.resolve(callback(err))
    );
};
var p = () => new Promise((resolve, reject) => resolve('success'));
p()
    .then(data => {console.log(data); x+1;})
    .catch(err => {console.log(err.message); y+2;})
    .then(data => console.log(data))
    .finally(data => console.log(data));

文章来源:http://blog.csdn.net/sinat_17775997/article/details/60581125

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容