Javascript:有没有办法为Parse.Promise.when指定无限输入参数?

时间:2014-12-17 08:47:44

标签: javascript parse-platform promise .when

查看Parse.Promise.when(https://www.parse.com/docs/js/symbols/Parse.Promise.html#.when)的文档,目前有两种方法可以指定它。第一个是逗号分隔的输入参数“when”,后面是“then”中函数的逗号分隔输入

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

,第二个是“when”的数组输入,后跟“then”中函数的逗号分隔输入。

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

我的问题是:对于“then”中的函数,是否有一种简单的方法来指定无限量的输入而无需实际输入无限量的输入?换句话说,有没有办法以简单的方式重现这个?

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

我尝试使用“arguments”变量,但在这种情况下它不起作用。看来我必须逐个输入参数r1,r2,r3 ......∞。有没有人知道这方面的方法?请帮忙

1 个答案:

答案 0 :(得分:0)

不,但会有。

ECMAScript 6功能rest parameters允许您执行此操作:

Parse.Promise.when(promises).then(function(r1, r2, r3, ....rest) {
     console.log(r1); // prints 1
     console.log(rest); // an array with the rest of the parameters.
});

在EcmaScript 5中,您需要使用arguments

Parse.Promise.when(promises).then(function() {
     console.log(arguments[0]); // prints 1
     // prints 2 in the first iteration all the way to the last one
     for(var i = 1; i < arguments.length; i++){
         console.log(arguments[i]); 
     });
});