我的问题与此处的问题非常相似:How to pass a value to an AngularJS $http success callback
根据Angular.js
$ http遗留承诺方法成功与错误已被弃用。请改用标准方法。
那么怎么样,只用.then做类似的事情?
我的代码在我的服务
中碎片化了fetchFromAPI: function(key) {
return $http.jsonp(...);
}
这是我的控制器
for (var i = 0; i < units.length; i++){
Service.fetchFromAPI(i)
.then(function(response) {
console.log(i);
}, function(response) {
console.log(response);
});
}
但是控制台的输出是相同的数字,因为在返回任何调用之前for循环完成执行并且我无法绕过上面编写类似于.success示例的所有内容,所有我的尝试给我一个错误,我的控制器不是一个功能。
Jim Horng发布的解决方案
$http.get('/plugin/' + key + '/js').success((function(key) {
return function(data) {
console.log(key, data);
}
})(key));
答案 0 :(得分:1)
一个快速解决方案可能是:
for (var i = 0; i < units.length; i++){
Service.fetchFromAPI(i)
.then((function(key) {
return function (response) {
console.log(key, response);
};
})(i), function(response) {
console.log(response);
});
}