我的問題是頗爲相似的問題在這裏: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示例的上述內容,但是所有嘗試都給了我一個錯誤,指出我的控制器不是函數。
發表吉姆·弘的解決方案是
$http.get('/plugin/' + key + '/js').success((function(key) {
return function(data) {
console.log(key, data);
}
})(key));
我的問題是不迭代數組中的對象,而是使用回調函數中的索引,但可能不清楚。 –
通過閱讀maxdec的鏈接後,我意識到angular.forEach提供了必要的外殼來完成這項工作。它確實會提供更清晰的代碼。 –
@CarstenFarving upvote並接受:) –