解析云代码延迟 for 循环的每次迭代

Parse cloud code delay each iteraton of for loop

我需要 运行 ParseObjects 列表上的一个函数,但由于我的 progressTournament 函数是异步的,所以它:

A​​:取消对 progressTournament 的任何现有调用。
B: Returns status.success 过早.

我的理解是我需要 progressTournament return 一个承诺,并以某种方式延迟我的代码,直到该承诺得到解决,但是我对承诺的理解太有限,无法弄清楚如何实现它。

我非常感谢对此提供帮助,希望能尽快收到回复。

后台作业代码

Parse.Cloud.job('progressTournaments', function(request, status)
{
    var tournamentsQuery = new Parse.Query('Tournament');
    tournamentsQuery.lessThan('nextRoundTime', moment().toDate());

    console.log('Finding tournaments that are due to progress...');
    tournamentsQuery.find(
    {
        success: function(results)
        {
            console.log('Progressing ' + results.length + 'tournaments')

            for (var i = 0; i < results.length; i++)
            {
                progressTournament(results[i], null);
                // Wait here until progressTournament finishes!
            }

            status.success();
        },
        error: function(error)
        {
            status.error();
        }
    });
});

能够使用 Parse.Promise.when()

实现我想要的
tournamentsQuery.find(
function(tournaments)
{
    var promises = [];

    for (var i = 0; i < tournaments.length; i++)
        promises.push(tournamentUtils.progressTournament(tournaments[i]));

    return Parse.Promise.when(promises);
}).then(
function(progressedTournaments)
{
    response.success("All tournaments progressed");
},
function(error)
{
    response.error(error);
});

如果他们需要串联而不是并行完成,可以使用 Parse.Query.each() 代替

应该注意,自从发布此问题后迁移到自托管解析服务器后,现在使用响应而不是状态。