我正在创建一个使用koa和babel async / await
的API我的控制器功能中的每个承诺都是这样的:
async function ... {
await Promise ...
.then(data => response function)
.catch(err => err function)
}
每个承诺都有完全相同的响应和错误功能。
有没有办法让我自动让每个承诺用相同的then / catch解析(就像承诺的默认解析函数一样)。
然后我的代码看起来像这样:
async function ... {
await Promise ...
}
并且承诺将自动解决/捕获。
答案 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
});