Parse: Promise.when with many promises?

2019-04-08 21:45发布

问题:

Parse documentation ( https://www.parse.com/docs/js/symbols/Parse.Promise.html#.when ) explains that when using Parse.Promise.when, it is kosher to specify an array of promises:

var p1 = Parse.Promise.as(1);
var p2 = Parse.Promise.as(2);
var p3 = Parse.Promise.as(3);

var promises = [p1, p2, p3];
Parse.Promise.when(promises).then(function(r1, r2, r3) {
  console.log(r1);  // prints 1
  console.log(r2);  // prints 2
  console.log(r3);  // prints 3
});

...which is sweet!

But, do you really have to list every single promise response in your then() function? Not really feasible if you have an array of promises of unknown size, and not very DRY!

Can I do this?

Parse.Promise.when(promises).then(function(responses) {
  console.log(responses[0]);  // prints 1
  console.log(responses[1]);  // prints 2
  console.log(responses[2]);  // prints 3
});

?

回答1:

You can make use of JavaScript's builtin special variable, arguments like this

Parse.Promise.when(promises).then(function() {
  console.log(arguments[0]);  // prints 1
  console.log(arguments[1]);  // prints 2
  console.log(arguments[2]);  // prints 3
});