我有以下方法:同步調用中的node.js
var get = function(query_para,callback) {
var queryParams = query_para;
var timestamp ;
var some_Data = {};
var data;
request({url:"http://some-url.com/q?", qs:queryParams}, function(err, response, body) {
if(err) { console.log(err); return; }
console.log(body);
var data = JSON.parse(body);
some_Data.count = data.count;
console.log("Returned data: "+some_Data.count);
callback(null,some_Data);
});
};
我想兩次調用該方法,並結合他們的結果。我已經通過以下方式使用回調來實現它:
get({ start: '2014/09/13-10:00:00', end: '2014/09/13-11:00:00', format: 'json' }, function(err, result1){
get({ start: '2014/09/13-11:00:00', end: '2014/09/13-12:00:00', format: 'json' }, function(err, result2){
console.log("r1:: "+result1.count);
console.log("r2:: "+result2.count);
});
});
有沒有更好的方法使其同步?我讀了幾件事(承諾和同步客戶端),但我不明白。兩次調用該函數並結合其結果的最佳方式是什麼?
不 - 你的解決方案看起來不錯。另外,你是否會混淆「同步」和「串行」的概念?你的代碼在* serial *中執行兩個動作,但它執行的IO仍然是* asynchronous *。請注意,您可以在* parallel *中執行請求以提高性能並仍然保持排序(假設您的請求不會改變目標資源)。 – maerics