javascript中有許多可以統一收集異步回傳資料的方法,例如jQuery的$.when()
而node.js中也可以透過async module來達到一樣的目的
async github 裡面會有詳細的文件
npm安裝
npm install async
以讀取MySQL multiple query為例
var conn = require('./routes/mysql'),
async = require('async')
async.parallel([
function(callback){ conn.db.query("SELECT * FROM `table`", function(err, result){ callback(err, result);}); },
function(callback){ conn.db.query("SELECT * FROM `table`", function(err, result){ callback(err, result);}); }
], function(err, result) {
console.log(err);
console.log(result);
});
另外也可以使用whilst執行大量的function
//用法
var count = 0;
async.whilst(
function () { return count < 5; },
function (callback) {
count++;
setTimeout(callback, 1000);
},
function (err) {
// 5 seconds have passed
}
);
以request為例
var request = require("request"),
async = require("async");
count = 0;
async.whilst(function () {
return count < 3;
},
function (next) {
request({
uri: '',
},function(error, response, body) {
if(!error) {
console.log(body);
count++;
next();
}
});
},
function (err) {
//最後會執行,如果沒有錯誤,err會等於undefined
console.log(err);
});