【发布时间】:2014-08-02 01:27:37
【问题描述】:
当使用 q 时,我得到的响应与它循环的次数相同:
function start() {
var the_promises = [];
var api_info = config.AFV
var deferred = Q.defer();
var extPath = '/search/'
var callType = 'GET'
var mymd = buildmd5(api_info, extPath, callType);
for(var page=1;page<4;page++) {
console.log('getting page:'+page)
new Client().get(url'+page, function(data, response){
deferred.resolve(data);
});
the_promises.push(deferred.promise);
}
return Q.all(the_promises);
}
start().then(function (clips) {
inspect(clips)
});
输出: 结果页码:['1'], 结果页码:['1'], 结果页码:['1'], 结果页码:['1'],
我觉得我可能有 var deferred = Q.defer();在错误的地方,它不会保存到不同的承诺。我知道这个版本的代码不起作用,但我只关心承诺。谢谢!
【问题讨论】:
-
将
var deferred = Q.defer();移动到你的循环中。 -
如果您有多个
promises,则需要多个defer对象。您正在为所有承诺重用相同的defer,这很可能是问题的原因。
标签: javascript node.js promise q