如何使用默认catch和处理程序创建Promise

时间:2016-07-05 01:50:01

标签: node.js promise async-await ecmascript-6 koa

我正在创建一个使用koa和babel async / await

的API

我的控制器功能中的每个承诺都是这样的:

async function ... {
    await Promise ... 
       .then(data => response function)
       .catch(err => err function)
}

每个承诺都有完全相同的响应和错误功能。

有没有办法让我自动让每个承诺用相同的then / catch解析(就像承诺的默认解析函数一样)。

然后我的代码看起来像这样:

async function ... {
    await Promise ... 
}

并且承诺将自动解决/捕获。

1 个答案:

答案 0 :(得分:2)

使用构图:

class MyPromise {
    constructor(executor) {
       this.promise = new Promise(executor);
       this.promise = this.promise
                          .then(defaultOnFulfilled, defaultOnReject);
    }
    then(onFulfilled, onRejected) {
       return this.promise.then(onFulfilled, onRejected);
    }
    catch(onRejected) {
       return this.promise.catch(onRejected);
    }
}

可以让你这样做:

new MyPromise((resolve, reject) => {... }).then(() => {
   // default actions have already run here
});