javascript - 在每个 Promise.then 函数之后执行一个通用方法

标签 javascript node.js promise bluebird

我正在开发一个 Nodejs 应用程序并使用 bluebird.js - Promise。我有一个方法,我想在链中执行每个 .then() 方法之后调用该方法。 bluebird.js 中是否有支持此功能的方法(或 API)?

谢谢。

最佳答案

您可以为此使用 bluebird 监控 API。

Promise.config({
  monitoring: true
});

监听promiseChained事件来检测then是否被链接,然后监听promiseFulfilled事件来了解回调何时执行:

var candidates = new WeakSet(); // a set for our promises that were chained
process.on('promiseChained', (_, {promise, child}) => {
    candidates.add(child);
});
process.on('promiseFullfilled', (_, {promise}) => {
    if(candidates.has(promise)) {
       callYourFunctionHere(); // HERE  
    }
});

这将在执行的每个 then 处理程序上执行,如果您想针对特定 then 执行它,在添加到候选者之前 - 检查如果promise(参数)是链接到的promise或者它在集合中(所以它是链的一部分)。

关于javascript - 在每个 Promise.then 函数之后执行一个通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37524970/

相关文章:

javascript - 用于在 javascript 中存储对象的类型化数组

javascript - Node JS - 如何判断套接字是否已使用 Einaros WS 套接字模块打开?

javascript - 无法使用 Promise 获取属性 'then'

javascript - 如何避免在多个 Express.JS 路由中重复使用 Passport.JS 代码

javascript - 如何从 react 路由器的路径中获取变量?

javascript - 如何在 NicEdit 中设置在新窗口中打开链接的默认值

node.js - Mongoose 辅助方法没有 findOne 方法?

javascript - Node.js Express 没有响应

javascript - 无法测试已解决 promise 的效果

javascript - 在 promise 中链接回调