我正在尝试做类似的事情:
console.log("start spinner!");
for (var i = 0; i < modules.length; ++i) {
var filename = modules[i].filename;
$.get('./views/templates/'+ filename ).done(function(data){
modulesTemplates.push(data);
console.log(data);
}).fail();
}
如何进行回调或将整个周期包装在Promise中?
我尝试了bluebirdjs,类似:
Promise.all([ modulesTemplates ])
.then(function(data){
console.log(course.modulesTemplates);
loadView('home.html');
console.log("stop spinner!");
});
但这是行不通的。我是否缺少某些东西,或者这是一种更好的方法?
console.logs的顺序:
启动微调器!
[]
停止微调!
tempalte 1
范本2
最佳答案
使用bluebird,假设请求可以立即发送,您可以执行以下操作:
console.log("Start Spinner");
Promise.map(modules, function(module){
return $.get('./views/templates/' + module.filename);
}).then(function(modulesTemplates){
// module template is a list of all the templates loaded here
// this code will be reached after all are loaded, for example
// modulesTemplates[0] is the first template.
console.log("Stop Spinner");
});
关于javascript - 在Promise中包装异步周期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32963443/