Node.js 如何使用默认捕获和处理程序创建承诺

Node.js 如何使用默认捕获和处理程序创建承诺,node.js,promise,async-await,ecmascript-6,koa,Node.js,Promise,Async Await,Ecmascript 6,Koa,我的控制器功能中的每个承诺如下所示: async function ... { await Promise ... .then(data => response function) .catch(err => err function) } async function ... { await Promise ... } 每个承诺都有完全相同的响应和错误函数 有没有一种方法可以让我用相同的then/catch自动解析每个承诺(就像承

我的控制器功能中的每个承诺如下所示:

async function ... {
    await Promise ... 
       .then(data => response function)
       .catch(err => err function)
}
async function ... {
    await Promise ... 
}
每个承诺都有完全相同的响应和错误函数

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

那么我的代码将如下所示:

async function ... {
    await Promise ... 
       .then(data => response function)
       .catch(err => err function)
}
async function ... {
    await Promise ... 
}
承诺将自动解析/捕获。

使用合成:

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
});

也许相关:We你不使用<代码>尝试{Read Read(Apple答应)} catch(e){Err(e)} /Case>如果你有异步/等待?我在很多情况下使用,但是在这种情况下,我不是。这看起来像Koa对我的误解。相反,您倾向于在上游使用中间件功能来处理下游的成功和失败,所有这些都集中在一个地方。使用中间件来排除重复的逻辑并使路由最小化,这就是它的目的。你能给我一个例子吗?听起来像
const-applyDefaults=promise=>promise.then(defaultoncompleted,defaultOnReject)更易于编写和使用…@Bergi没错,但我从OP的问题中了解到,他们希望能够执行
新承诺(执行者)
,并将其应用于所有链。我猜
函数PromiseWithDefaults(执行者){返回新承诺(执行者)。然后(DefaultOnCompleted,defaultOnReject);}
仍然可以这样做-无需“subclass”
承诺
有没有办法避免调用
.then()
.catch()
呢?@asuna您实际上不需要调用
然后
catch
,你只要在任何地方使用
MyPromise
来支持
Promise
,oyu的事情就会自动处理。