【发布时间】:2017-06-30 21:00:59
【问题描述】:
在 Node.js 中,我正在等待几个请求完成,然后再进行如下函数调用:
function loadQuotes(symbols){
var promises = [];
for(var s in symbols){
var deferred = Q.defer();
var url = rootURL;
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
deferred.resolve();
console.log("resolved");
}
});
promises.push(deferred.promise);
}
return Q.all(promises);
}
我正在等待所有请求如下
loadQuotes(symbols.slice(0,3)).then(function(data){
console.log("done");
httpServer();
}).done();
所有请求都已发出,但我没有看到控制台打印“完成”。 promises 变量确实是一个promise 列表,它们都已“解决”,但then 函数没有被调用。有什么想法吗?
【问题讨论】:
-
for (var s in symbols)?您不会在任何地方使用s。我错过了什么吗? -
我在 url 中使用它,我把那部分省略了
-
您也没有在请求回调中处理错误情况(最好通过调用
deferred.reject(error)),因此如果发生错误,您的承诺将永远无法解决。 -
所有延迟解析,打印出适当数量的“resolved”
-
@Abundance 你还在使用 ES5 吗?