$scope$apply in AngularJS-每次执行的函数是最后定义的函数

$scope.$apply in AngularJS - Function executed each time is the last defined function

本文关键字:函数 定义 最后 执行 scope apply in AngularJS-      更新时间:2023-09-26

如果我在异步HTTP请求的循环中调用下面的代码,我会得到后一个响应。关于我哪里可能出错,有什么建议吗?

注意:这本质上是伪代码。

function successful_request(site) {
    console.log('In: ' + site.id);
    $scope.$apply(function() { console.log('Out: ' + site.id); }
}

输出:

In: 1
In: 2
In: 3
Out: 3
Out: 3
Out: 3

我希望我在这里讲得有道理。我怀疑这是我如何调用$scope的一个例子$申请,但我不确定我应该采取什么不同的做法。

在我看来,好像您在异步循环范围之外全局声明了变量site

当在循环中运行闭包时,这种副作用非常常见,我真的无法从您的示例中判断出来,但您可能需要查看以下链接,看看它是否适用于您的情况。循环中的JavaScript闭包–简单实用的示例