【问题标题】:Handle rest API during iteration angularjs在迭代angularjs期间处理rest API
【发布时间】:2026-01-13 06:15:01
【问题描述】:

如何处理来自给定提琴手的这段代码。

for (var i = 0; i < carList.length; i++) {
    $http.get("accesoriesList.htm").then(function(accesories) {
      $scope.accesoriesList.push({"id": carId, "name": carName, "accesories" : accesories});
}

提琴手 https://jsfiddle.net/gsk/euuhsowu/

我正在尝试获取汽车配件列表。 但我遇到了不同的问题:

  1. Rest 调用被异步触发,并且没有为各自的汽车项目设置配件
  2. 我希望根据汽车项目设置配件,因为 REST API 已在迭代中触发,但我只收到一个设置为所有配件的响应。
  3. Rest API 在迭代中被触发,所以我希望得到 carList.length 响应,而不是得到一个响应。

【问题讨论】:

  • 你如何认识到你只有一个响应你的小提琴无论如何都不起作用
  • 当然提琴手是样本。我在我的应用程序中添加了警报消息以检查它的响应返回。

标签: javascript angularjs http restangular


【解决方案1】:

您应该始终认为异步。 顺序异步调用应该放在之前的回调函数中。

所以第二个 API 调用 (accesoriesList.htm) 应该在第一个回调中:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
    $scope.carList = [];
    $scope.accesoriesList = [];

    $http.get("carList.htm").then(function(data) {
      for (var i = 0; i < data.length; i++) {
            $scope.carList.push({"id": data[i].carId, "name": data[i].carName});
      }

      for (var i = 0; i < $scope.carList.length; i++) {
        $http.get("accesoriesList.htm").then(function(accesories) {
          $scope.accesoriesList.push({"id": carId, "name": carName, "accesories" : accesories});
        });
      }

  });

});

也许这只是一个例子,但我认为第二次调用应该有一些路由规则来接收 carId...

【讨论】: