AngularJS $ http帖子使用相同的JSON来调用自定义API

时间:2015-08-20 12:14:38

标签: angularjs http

我使用自己的AngluarJS服务连接到自定义JSON API(本地嵌入式设备)。

适用于单次通话。

但是,当我进行多次通话时,它每次都会发送最后一次通话,所以我确定我的示波器有问题,但我无法确定在哪里。

(为简洁而编辑的例子)

我有很多自定义调用,如下所示:

CustomService.get(name).then(function () {

定义如下:

module.service('CustomService', function (CustomSendJson) {
   var self = this;
   this.getResponse = null;
   this.get = function (name) {
      ...
      command.data.name = name;
      return CustomSendJson.send(
         {
            'json': command,
            'success': function () {
               self.getResponse = CustomSendJson.response.data;
            }
         });
   };
...
});

所有人都使用服务:

module.service('CustomSendJson', function ($http) {
   var self = this;
   this.query = null;
   this.response = null;

   this.send = function (options) {
      var json = options['json'];
      var successFn = options['success'];
      ...

      return $http.post('/api', json).then(
          // process success and failure

我在创建帖子时检查了json

return $http.post('/api', json).then(

并且每次都是正确的,但是当实际发送http帖子时,网络流量显示它每次都发送最后一次呼叫。

我尝试使用超时和延迟创建一个问题的Plunker,但我可以创建的是每次都有效的,除了在这里不适用的角落情况之外!

http://plnkr.co/edit/YuYcCyUOABwcjRaIldYI?p=preview

我希望有人能看到我犯错的地方。

修改:调用代码

// with listResponse containing data for "9_1", "11_1" and "16_1"
for (var index in listResponse) {
    var name = listResponse[index].name;
    console.log('Start loop for '+ name);
    ...
    (function (name) {
        console.log('annon call for '+ name);
        CustomService.get(name).then(function () {
            console.log('Get return for for '+ name);
            var data = CustomService.getResponse;
            (function(data){
                $scope.outputList[name] = {
                    'name': data.name,
                    ...
                };   
            }(data));
        });
    }(name));
}

0 个答案:

没有答案