以下是云函数,即“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/