大佬教程收集整理的这篇文章主要介绍了node.js中的顺序执行,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
common.findOne('list',{'listId': parseInt(request.params. istId)},function(err,result){ if(err) { console.log(err); } else { var tArr = new Array(); if(result.tasks) { var tasks = result.tasks; for(var i in tasks) { console.log(tasks[i]); common.findOne('tasks',{'taskId':parseInt(tasks[i])},res){ tArr[i] = res; console.log(res); }); } console.log(tArr); } return response.send(result); } });
它不是在Node.js中按顺序执行的,所以我在执行结束时得到一个空数组.问题是它会先执行console.log(tArr);然后执行
common.findOne('tasks',res){ tArr[i] = res; console.log(res); });
我强烈建议你看看async,因为它很容易让你做这样的事情:
var async = require('async'); // .. if(result.tasks) { async.forEach(result.tasks,processEachTask,afterAllTasks); function processEachTask(task,callBACk) { console.log(task); common.findOne('tasks',{'taskId':parseInt(task)},res) { tArr.push(res); // NOTE: Assuming order does not matter here console.log(res); callBACk(err); }); } function afterAllTasks(err) { console.log(tArr); } }
这里要看的主要内容是processEachTask与每个任务并行调用,因此无法保证顺序.要标记任务已处理,您将在findOne的匿名函数中调用回调.这允许您在processEachTask中执行更多异步工作,但仍然设法表示何时完成.当每个任务完成后,它将调用afterAllTasks.
以上是大佬教程为你收集整理的node.js中的顺序执行全部内容,希望文章能够帮你解决node.js中的顺序执行所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。