原生promise無法支持finally和done,如何實(shí)現(xiàn)?

Promise.prototype.done = function(onResolved, onRejected){
    this
        .then(onResolved, onRejected)
        .catch(function(err){
            setTimeout(() => { throw err}, 0); //拋出一個(gè)全局錯(cuò)誤
        })
}
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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容