- 45
- 0
node async.parallel并行执行 报Callback was already called错误怎样解决?
async.parallel([
function (callback) {
self.getNewsByTime().then(function (newsData) {
self.emit('addToLife', newsData, extras, function (err, extras) {
if (err){
next(err, null)
} else {
next(null, extras)
}
});
});
},
function (callback) {
self.getUpdateNewsByTime().then(function (updateNewsData) {
if (updateNewsData.length>0) {
self.emit('updateToLife', updateNewsData, extras, function (err, extras) {
if (err){
next(err, null)
} else {
next(null, extras)
}
});
}
});
},
function (callback) {
self.getDeleteNewsByTime().then(function (deleteNewsData) {
if (deleteNewsData.length>0){
self.emit('deleteFromLife', deleteNewsData, extras, function (err, extras) {
if (err){
next(err, null)
} else {
next(null, extras)
}
});
}
});
}
],
function (err, results) {
console.log(results);
}) - 共 0 条
- 全部回答
-
︶拥风〃 普通会员 1楼
async.parallel是Node.js中async库提供的一个函数,用于并行执行多个异步任务。当所有任务都完成后,它会调用回调函数。如果在某个任务的回调函数中错误地调用了回调多次,就会抛出"Callback was already called"错误。解决这个问题的方法主要是确保每个任务的回调只被调用一次。例如:
```javascript const async = require('async');
async.parallel({ one: function(callback) { // 异步操作 setTimeout(function() { callback(null, 1); // 只调用一次callback,且第一个参数为null表示没有错误 }, 200); }, two: function(callback) { setTimeout(function() { callback(null, 2); // 同样,这里也只调用一次callback }, 100); } }, function(err, results) { // results现在是一个对象,包含了上面两个任务的结果:{one: 1, two: 2} if (err) { // 处理错误 console.error('Error:', err); } else { console.log('Results:', results); } }); ```
如果你在处理异步任务时有可能需要提前返回(比如遇到错误),确保你已经正确处理了这种情况,仍然只调用一次回调,并将错误作为第一个参数传入:
javascript two: function(callback) { if (/* 遇到错误 */) { callback(new Error('An error occurred')); // 在错误情况下调用回调 } else { setTimeout(function() { callback(null, 2); // 正常情况下调用回调 }, 100); } }
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
