javascript - 在将 promise 动态传递给 .when() 的情况下,如何处理 promise 的 successCallBack 中的每个响应

标签 javascript parse-platform promise

以下是云函数,即“batchReq1”和batchPromises。

无论如何,如果我知道推送的 Promise 的确切数量(考虑函数 batchPromises(results) 中结果的大小为“2”)并通过 when() 执行,我可以通过传递该值来处理成功响应.then() 的 successCallBack 中结果参数的数量(在下面的示例中为 request1、request2)。

如果我必须动态处理推送到 .when() 的 promise 数量,那么我们如何在 SuccessCallBack 中处理这个问题?与之前的场景不同,我们不能期望 then 方法中有固定数量的结果 (batchPromises(results).then(function (result1, result2) {....)

batchReq1

Parse.Cloud.define("batchReq1", function (request, response) {

    var results = request.params.imageArray;


    batchPromises(results).then(function (result1, result2) {

            console.log("Final Result:: Inside Success");

            console.log("Final Result:: Inside Success result 1::::"+result1);
            console.log("Final Result:: Inside Success result 2::::"+result2);

            response.success();

        }



//    batchPromises(results).then(function (arraySuccess) {
//
//        console.log("Final Result:: Inside Success");
//        console.log("Final Result:: Inside Success:: Length:: "+arraySuccess.length);
//        //Fetch all responses from promises and display
//        var _ = require('underscore.js');
//        _.each(arraySuccess, function (result) {
//
//            console.log("Final Result:: " + result)
//
//        });
//
//
//        response.success();
//
//    }



        , function (error) {
        console.log("Final Result:: Inside Error");
        response.error(error);

    });

});

批量 promise

function batchPromises(results) {

    var promise = Parse.Promise.as();
    var promises = [];


    var increment = 0;
    var isFromParallelExecution = false;


    var _ = require('underscore.js');
    _.each(results, function (result) {




        var tempPromise = Parse.Promise.as("Promise Resolved ");
        promises.push(tempPromise);
        }


            promise = promise.then(function () {

               return Parse.Promise.when(promises);

            });

        }
        increment++;
    });

    return promise;
}

最佳答案

这就是我处理这个问题的方式...

Parse.Cloud.define("xxx", function(request, response) 
{   
    var channels = ["channel1", "channel2", "channel3", "channel4", "channel5"];
    var queries = new Array();

    for (var i = 0; i < channels.length; i++)
    {
        var query = new Parse.Query(channels[i]);
        queries.push(query.find());
    }   

    Parse.Promise.when(queries).then(function()
    {
        var msg = "";
        for (var j = 0; j < arguments.length; j++)
        {       
            for (var k = 0; k < arguments[j].length; k++) 
            { 
                var object = arguments[j][k];
                msg = msg + "  " + object.get('somefield');
            }
        }
        response.success(msg);
    });
});

关于javascript - 在将 promise 动态传递给 .when() 的情况下,如何处理 promise 的 successCallBack 中的每个响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21981637/

相关文章:

angular - 通用 promise

javascript - RSVP.js - 数组上的多个异步函数调用

javascript - 自提交表单和 cookie PHP

c# - 使用 Parse 向 Android 设备发送推送通知

javascript - 为什么 try {} .. catch() 不能与 async/await 函数一起使用?

java - 如何在 onCreate 中使用从 parse 方法获取的变量

parse-platform - 在 parse.com 中有没有办法复制整个应用程序?

javascript - 以最小的时间复杂度在给定的一组数字中查找第三小的数字

javascript - 该值不引用当前作用域,而是引用 ES6 箭头样式函数中的父作用域

javascript - 使用 ajax 和 php 的空响应