私はループで約束しており、いくつかのスコープ変数を約束ハンドラに渡す方法はわかりません。ループ内で約束する変数を渡す
for(var i in superarray){
MyService.get(superarray[i].externalID).then(function(r){
console.debug(i);
});
MyServiceは、約束を返すgetメソッドを持つ作業サービスです。
app.factory('MyService', function($http,$q) {
return {
get : function(itemID){
var deferred = $q.defer();
$http.get('/someresturl/'+itemID).then(function(e) {
deferred.resolve(e.data);
}, function(reason) {
deferred.reject(reason);
});
return deferred.promise;
}
});
私のコンソールでは、console.debug logicalyは1,2,3,4,5を表示しません。しかし、5,5,5,5,5。 (私のスーパーアレイには5つの要素があります)。
私は約束の範囲で '私'の価値を渡すことができますので、then()でそれを使用できますか?
可能ですか?
「取得」機能が不必要に複雑であることを指摘しておく必要があります。次のように置き換えることができます:get:function(itemID){return $ http.get( '/ someresturl /' + itemID); } –