【发布时间】:2018-01-06 11:13:28
【问题描述】:
我正在使用 async.map 来处理多个任务,并且对于每个任务,我想设置一个超时时间。
async.map(tasks, handleFunction, (error, callback))
I add the setTimeout inside handleFunction to return immediately,
const handleFunction = function(callback){
setTimeout(()=> {return setImmediate(callback, new Error())});
// handler logic, detail process code ...
// some http requests or file read and
return callback();
}
以上,返回多个回调是有风险的,一个来自正常流程代码(如果任务完成成功),一个来自setTimeout。
我的问题是:有没有更好的方法来避免这种情况。因为目前的解决方案可能会返回两个回调。我收到以下错误:“回调已被调用。”
【问题讨论】:
-
你为什么要把
setImmediate()放在setTimeout()里面?你希望用它来完成什么?为什么不直接使用setImmediate()?还有,你为什么不指定setTimeout()的时间?
标签: javascript node.js callback settimeout async.js