我正在尝试使用不同长度和Cloud Function参数创建一个Parse Promises的顺序链,如下所示:
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);
});
如果数组只包含一个元素,则此方法很有效,但所有后续的Cloud Function调用都是使用 arg = undefined 进行的。有没有办法让我可以获得预期的功能?
答案 0 :(得分:1)
我怀疑i
到达2
,因为For
循环在大多数云调用解析之前结束,这意味着您可能会发送anArray[2]
作为参数,这是显然未定义。将For
循环替换为forEach
,以确保将数组的正确元素作为每个调用的参数发送:
anArray.forEach(function(element) {
promise = promise.then( function() {
return Parse.Cloud.run('cloudFunc', {arg: element});
});
});