【发布时间】:2015-11-22 20:10:03
【问题描述】:
我对 Promise 还很陌生,并且在处理 Q.when() 链时遇到了问题。
我想按顺序执行我的承诺。
这是我到目前为止所得到的。它按顺序运行,但不能解析我的 URL。 parseUrls(urls) 应该返回一个包含所有 parseUrl(url) 分辨率的数组。
function parseUrl(url) {
return function () {
var deferred = Q.defer();
// setTimeout as async placeholder
setTimeout(function() {
var result = {url: url};
deferred.resolve(result);
}
return deferred.promise;
}
}
function parseUrls(urls) {
var deferred = Q.defer();
var chain = Q.when();
urls.forEach(function (url) {
chain = chain.then(parseUrl(url));
});
chain = chain.then(deferred.resolve);
return deferred.promise;
}
getAllUrls()
.then(parseUrls)
.then(parseCards);
【问题讨论】:
-
你根本不需要使用延迟。
-
@SLaks 我已经编辑了我的问题。当您的评论来自我的示例代码未使用异步代码时,现在已修复。我的错。
标签: javascript node.js promise q