顺序解析承诺 运行 具有不同输入的云函数

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});
    });
});