【问题标题】:AngularJS and asynchronous operationsAngularJS 和异步操作
【发布时间】:2014-08-29 18:16:58
【问题描述】:

我正在使用 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 完成之前执行吗?我一直听说异步操作。但是,我不明白什么时候会发生,什么时候不会。

谢谢

【问题讨论】:

    标签: javascript angularjs asynchronous


    【解决方案1】:

    不,它不是异步的。 angular.forEach 不会异步运行。在 forEach 完成之前,您在 forEach 下面的代码无法运行。这是有保证的。另一件事是您不必在 forEach 迭代函数中执行return false。在你的情况下它没有用,即使你的第一个项目符合条件,它仍然会运行整个循环。

    我认为您可能将 forEach 误解为异步操作,可能是因为您注册的函数。它只是一个迭代函数,可用于评估每次迭代。

    异步函数的示例是$timeout (setTimeout)、$interval (setInterval)、promise 回调、ajax 回调、animationFrames 等...

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 2015-02-02
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多