我正在做什么:
function1(function(){
function2(function(){
function3(function(){
function4();
}
}
}
有更简单的方法吗?
miracleFunction([function1,function2,function3,function4]);
miracleFunction = function(array){
???
}
答案 0 :(得分:3)
在npm
上使用the async
package,您可以使用这样的数组,例如:
var async = require('async');
async.series([function1, function2, function3, function4]);
除了简单地在一系列中运行多个异步函数之外,它还具有简化并行运行异步操作,使用异步函数映射数组以及各种其他有用组合器的函数。
答案 1 :(得分:0)
看看承诺,它也可以让你很好地处理错误。
Q特别好,只支持您的用例。这里有直接链接:https://github.com/kriskowal/q#sequences
答案 2 :(得分:0)
不要深入回调,而是将其分解为易于理解的功能:
function GetUserData(id, callback) {
// db queries, etc
connection.query('...get user info...', function (err, results) {
connection.query('...get user related whatnot...', function (err, results) {
callback ();
});
});
}
connection.query('...load page data...', function (err, results) {
GetUserData( function () {
res.render('page.ejs', ... );
});
});
您甚至可以将更多使用过的函数分解为模块,这样您的代码就不会有太多混乱。异步软件包看起来很不错,但就个人而言,我喜欢看流程。始终达到程序员的偏好。