当前位置:  开发笔记 > 编程语言 > 正文

Angular.foreach异步回调不起作用

如何解决《Angular.foreach异步回调不起作用》经验,为你挑选了1个好方法。

我试图检测foreach语句是否与foreach中的语句一起完成.根据我的研究,许多人都要求使用承诺.当我实现它时,它没有按照我期望的方式执行.

var uploadUrl = "/api/upload";
$('#add_product').closeModal();
 var promises = angular.forEach(vm.images_selected, function(value , key){
    return File_Upload.uploadFileToUrl(value, uploadUrl)
    .success(function(result){
        vm.images_selected_uploaded.push(result);
        console.log('here')
    });
})
$q.all(promises).then(function () {
    console.log('there')
    console.log(vm.images_selected_uploaded)
})

从上面的代码(假设值长度为2,输出将是

there
here
here

我真正想要的是在这里.我在这里错过了什么?



1> 小智..:

第一个问题,angular.forEach返回对第一个参数的引用,因此它们不会是您正在寻找的承诺

第二个问题,angular没有替代.map

如果在promises数组中保存promise,则可以执行此操作

var uploadUrl = "/api/upload";
$('#add_product').closeModal();
var promises = [];
angular.forEach(vm.images_selected, function(value , key){
    promises.push(File_Upload.uploadFileToUrl(value, uploadUrl)
        .success(function(result){
            vm.images_selected_uploaded.push(result);
            console.log('here')
        })
    );
})
$q.all(promises).then(function () {
    console.log('there')
    console.log(vm.images_selected_uploaded)
});

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有