顺序解析承诺 运行 具有不同输入的云函数
Sequential Parse Promises running Cloud Function with varying input
我正在尝试制作一个具有不同长度和 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 进行的。有什么方法可以获得预期的功能吗?
我怀疑 i
达到 2
因为 For
循环在你的大部分云调用被解析之前结束,这意味着你可能发送 anArray[2]
作为参数并且那显然是未定义的。将 For
循环替换为 forEach
以确保发送正确的数组元素作为每次调用的参数:
anArray.forEach(function(element) {
promise = promise.then( function() {
return Parse.Cloud.run('cloudFunc', {arg: element});
});
});
我正在尝试制作一个具有不同长度和 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 进行的。有什么方法可以获得预期的功能吗?
我怀疑 i
达到 2
因为 For
循环在你的大部分云调用被解析之前结束,这意味着你可能发送 anArray[2]
作为参数并且那显然是未定义的。将 For
循环替换为 forEach
以确保发送正确的数组元素作为每次调用的参数:
anArray.forEach(function(element) {
promise = promise.then( function() {
return Parse.Cloud.run('cloudFunc', {arg: element});
});
});