gpt4 book ai didi

node.js - 混合异步操作(回调和 promise )完成后如何执行任务?

转载 作者:太空宇宙 更新时间:2023-11-03 23:33:24 25 4
gpt4 key购买 nike

我正在编写一些 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/

25 4 0