2015-12-13 104 views
1

我試圖做解析的順序鏈具有不同長度和雲功能參數類似這樣的承諾:順序解析承諾運行雲功能的不同輸入

var anArray = ['1', '2']; 
var promise = new Parse.Promise.as(); 

for (var i = 0; i < anArray.length; i++) { 
    promise = promise.then(
     function() { 
      return Parse.Cloud.run('cloudFunc', {arg: anArray[i]}); 
     } 
    ) 
} 

promise.then(
    function(result) { 
     // print result of last promise 
    } 
); 

Parse.Cloud.define('cloudFunc', function(request, response) { 
    response.success(request.params.arg); 
}); 

這種運作良好,如果陣列只包含一個元素,但是所有後續的雲功能調用均使用arg = undefined。有沒有一種方法可以獲得預期的功能?

回答

1

我懷疑i達到2For循環結束之前,大部分的雲呼叫的方式進行解決,這意味着你有潛在送anArray[2]作爲參數,這顯然是不確定的。用forEach替換您的For迴路,以確保您發送陣列的正確元素作爲每個呼叫的參數:

anArray.forEach(function(element) { 
    promise = promise.then(function() { 
     return Parse.Cloud.run('cloudFunc', {arg: element}); 
    }); 
});