Javascript 节点为每个循环并行运行
我目前正在使用此for each循环从mysql数据库获取数据:Javascript 节点为每个循环并行运行,javascript,mysql,node.js,database,ecmascript-6,Javascript,Mysql,Node.js,Database,Ecmascript 6,我目前正在使用此for each循环从mysql数据库获取数据: //...sql query returns result var obj = {}; Object.assign(obj, result); async.forEach(obj, function (item, callback){ switch(item.type){ case 11: //for exa
//...sql query returns result
var obj = {};
Object.assign(obj, result);
async.forEach(obj, function (item, callback){
switch(item.type){
case 11:
//for example counting likes
db.query("SELECT COUNT(*) AS likes FROM tbl_post_likes WHERE BINARY post_id = ?", [item.post_id], function(err, res){
if(err) throw err;
item.likes = res[0].likes;
callback();
});
break;
case 12:
/*I haven't completed the other types yet.
But they are having similar queries
because there are different kind of posts.
I want to to run these queries parallel */
callback();
break;
case 21:
callback();
break;
case 22:
callback();
break;
default:
console.log("wtf?: " + result[i]);
callback();
break;
}
}, function(err) {
if(err) throw err;
res.writeHead(200, {"Content-Type": "application/json"});
console.log(obj);
res.end(JSON.stringify(obj));
});
最后,我不想将对象“obj”作为JSON输出,其中包含所有必需的信息
非常感谢您的帮助&很抱歉我的英语不好;)
使用async.eachSeries而不是async.forEach
以下文件详细说明了:
这里有更多的例子
如果这解决了您的问题,或者您仍然遇到问题,请接受作为答案,在此处分享,并进一步了解问题所在。eachseries“与每个相同,但一次只运行一个异步操作。”。他的目标不是并行运行,不是串行运行吗?也许只是一个措辞拙劣的问题。默认情况下,问题是并行运行,并希望逐个运行。第二个超链接显示“找不到该页面”