为什么我的承诺没有得到解决
Why isn't my promise getting resolved?
我有两个函数 - 用于下载文件的辅助函数,如下所示
var downloadHelper = function(url, saveDir) {
var deferred = Q.defer();
setTimeout(function() {
deferred.resolve("success");
}, 2000);
return deferred.promise;
}
现在我有一个要并行下载的文件列表。我有该函数的逻辑如下:
var downloadAll = function() {
var fileDownloadList = []
for(var key in config.files) {
var deferred = Q.defer();
var saveLocation = __base + config.localDir
downloadHelper(
config.files[key],
saveLocation
).then(function() {
deferred.resolve("downloaded: " + fileUrl);
}).catch(function(err) {
deferred.reject(err);
});
fileDownloadList.push(deferred.promise);
}
Q.all(fileDownloadList).done(function() {
console.log("All downloaded");
},function(err) {
console.log(err);
});
setTimeout(function() {
console.log(fileDownloadList);
}, 10000);
}
完成永远不会被召唤!
出于调试目的,我添加了一个 setTimeout,它将在 10 秒后调用,我看到的是,在 2 个文件中,第二个承诺已解决,第一个承诺仍处于挂起状态。
有什么想法吗?
提前致谢
使代码正常工作的一种方法
for(var key in config.files) {
(function() {
var deferred = Q.defer();
var saveLocation = __base + config.localDir
downloadHelper(
config.files[key],
saveLocation
).then(function() {
deferred.resolve("downloaded: " + fileUrl);
}).catch(function(err) {
deferred.reject(err);
});
fileDownloadList.push(deferred.promise);
}());
}
但是由于 downloadhelper 返回一个承诺,因此无需创建另一个承诺
for (var key in config.files) {
var saveLocation = __base + config.localDir
fileDownloadList.push(downloadHelper(
config.files[key],
saveLocation
).then(function () {
return("downloaded: " + fileUrl);
}));
}
你会看到我删除了
.catch(function(err) {
deferred.reject(err);
})
这是多余的,这和根本没有捕获
相关文章:
- 为什么不'我的窗口滚动事件根本没有启动.其他答案没有解决问题
- MathJax正在复制我的方程式——为什么以及如何解决这个问题
- 闭包编译器--调试解决了我的错误
- 如何让我的网站上的WEBP图像加载在morzilla firefox中有一个可能的解决方案吗?如果是,那么如何
- 找不到解决我的“;addEventListener”;作用
- 在我的案例中,如何解决我的承诺问题
- 使用我的基于标签的平滑滚动脚本而不带“a”的解决方案
- 有没有一种方法可以在IE8中解决我的Rails javascript应用程序.js的问题
- 可以'我找不到关于koa.js研讨会解决方案的解释,练习一
- 你能帮我解决感冒的麻烦吗
- 为什么不't我的$q.delate().解决工作
- 使用 unity,我的 js 文件无法解决问题
- 我正在使用JQUERY灯箱,我帮助我解决简单的问题
- 在我的情况下,如何解决我的单元测试问题
- Google PageSpeed Insights说我的网站很重.外部模态是一种解决方案吗?
- 需要帮助来解决我的Java问题
- 你能解决我的JQuery文本动画错误吗,导致错误的文本改变外观
- 如何解决我的http请求问题
- 如何解决我的http请求问题
- 有人能帮我解决我的代码笔脚本获胜的原因吗;t在文本编辑器中运行