我正在使用AngularJS构建一个非常基本的应用程序。我需要做的一件事是从列表中删除项目。为了做到这一点,我写了以下代码:
$scope.removeItem = function(item) {
var toRemove = -1;
angular.forEach($scope.items, function(_item, key) {
if (item === _item) {
toRemove = key;
return false;
}
});
if (toRemove >= 0) {
$scope.items.splice(i, 1);
return true;
}
return false;
};
这似乎有效。但是,我的数据集相对较小。我无法弄清楚的是.forEach
。该功能是否异步操作?换句话说,在angular.forEach
完成之前,.forEach
下的代码是否可以执行?我一直听说异步操作。但是,我不明白这种情况何时发生,何时不发生。
谢谢
答案 0 :(得分:1)
不,它不是异步的。 angular.forEach
不会异步运行。你在forEach下面的代码在forEach完成之前无法运行。这是有保证的。还有一件事是你不必在forEach迭代函数中做return false
。在你的情况下它是没用的,即使你的第一个项目符合条件,它仍会运行整个循环。
我认为你可能因为你注册的功能而错误地将forEach误解为异步操作。它只是一个迭代函数,可用于评估每次迭代。
异步函数的示例是$timeout
(setTimeout),$interval
(setInterval),promise回调,ajax回调,animationFrames等......