Javascript 在映射函数之后执行函数
我有这个密码Javascript 在映射函数之后执行函数,javascript,angularjs,asynchronous,Javascript,Angularjs,Asynchronous,我有这个密码 $scope.items.map(function (item) { if(item.keywords.indexOf($scope.formData.keyword) != -1){ array.push(bono); } }) 当映射完成时,我需要对数组的所有元素执行一个函数。我该怎么做?我想把电话叠起来,但我不知道怎么做 谢谢试试这个: var array = []; $scope.items.map(function (item) { if
$scope.items.map(function (item) {
if(item.keywords.indexOf($scope.formData.keyword) != -1){
array.push(bono);
}
})
当映射完成时,我需要对数组的所有元素执行一个函数。我该怎么做?我想把电话叠起来,但我不知道怎么做
谢谢试试这个:
var array = [];
$scope.items.map(function (item) {
if(item.keywords.indexOf($scope.formData.keyword) != -1){
array.push(item);
}
});
myFunction(array);
Array.map()
文档:
像这样试试
$scope.items.map(function (item) {
if(item.keywords.indexOf($scope.formData.keyword) != -1){
array.push(bono);
}
}).then(function(){}).then(function(){});
只要
$scope.items
是一个数组,如您在问题中所述,数组.prototype.map()
是同步的-这意味着您只需将下一条语句放在该代码之后,它将在.map()
完成处理后执行。我们可以使用Promise.all()函数:
var promises = [obj1, obj2,objN].map(function(obj){
return database.query('id').then(function(results){
return results;
})
})
Promise.all(promises).then(function(results) {
console.log("Result",results);
})
把它放在下一行。它是有角度的,它是异步的:(这段代码中什么是异步的?什么类型的
$scope.items
?.map
是否返回承诺?它没有回答我的问题。你为什么认为.map()
这里的函数返回一个承诺?它是说我比。然后不是一个承诺function@DavidLuque所有这三个答案都是垃圾,如果你回答了我关于项的问题,那会更有帮助。OP的问题看起来不像异步代码。为什么投票会被否决?@DavidLuque要澄清的是,这正是我的建议:mapFinished
在这里没有任何意义,只需将您的下一个代码放在下一行。@zerkms我将mapFinished放在下面就是为了清楚。map()返回一些东西(数组)。@CristianSmocot这有什么意义?。map()
总是返回一些东西。所以如果(mapFinished)
检查始终为真。@CristianSmocot:只需删除代码的原始版本。它没有任何作用。谢谢,我认为它是异步的,我需要控制它。