防止AngularJS中的Ajax竞争条件?

时间:2015-05-18 16:40:04

标签: ajax angularjs-scope race-condition

如果我向AngularJS中的$http个请求发出两个请求,其成功将更新相同的$scope,是否有一种标准的方法可以跟踪这个并防止因Ajax调用返回而导致的过时更改在错误的顺序?类似地,用户交互可以触发$scope更新。 E.g:

  1. 触发了AJAX请求
  2. 用户互动更改$scope.some_value
  3. 收到AJAX回复,想要更改$scope.some_value
  4. 3

    ,应拒绝对$scope.some_value的更改,否则$scope.some_value的值可能会不一致。

    我搜索了Angular文档和stackoverflow,但没有发现任何与此有关的内容。

    我正在考虑的一种方法是装饰$http服务,并为每个传出请求分配增量ID。我还将维护范围对象的映射以请求ID,记录哪个请求已更改此范围项。然后可以检查最后一次更新的请求ID,以确保它小于随后想要更新范围变量的请求ID。

    但是,这种方法实施起来似乎很棘手,并且不会考虑用户交互引起的变化。

    是否有处理此问题的标准模式?

0 个答案:

没有答案