我正在编写一些 Nodejs 应用程序。我的应用程序对某些 npm 模块有一些依赖。
在一个任务中,会涉及到两个异步操作,这两个异步操作的形式是callback和promise。下面我放了一些示例代码:
// the task which should be performed after async operation
var myTask = function(){
// do something
}
// first async operation in the form of callback
cbapi(myTask)
// second async operation in the form of promise
promiseapi()
.then(myTask)
在上面的例子中,当第一个异步操作和第二个异步操作完成时,myTask
将执行两次。但我想要的是仅在两个异步操作完成后才执行一次。
有什么办法可以做到吗?
最佳答案
正如@esaukuha所建议的,您应该 promise 您的回调 API,然后使用它们。
new Promise((resolve, reject) =>
cbapi((err, result) => {
if (err) reject(err);
else resolve(result);
})
)
.then(myTask) // ... chain
我有一个小npm module就是为了这个。
import fromCallback from 'promise-cb/from';
fromCallback(cb => cbapi(cb))
.then(myTask) // ... chain
关于node.js - 混合异步操作(回调和 promise )完成后如何执行任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35524024/