我使用自己的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));
}