使用Bluebird Promises做N次

时间:2016-05-26 14:08:01

标签: javascript bluebird

我正在尝试承诺每个人都非常兴奋。他们应该降低代码复杂性,这是我尚未观察到的功能。

就我而言,我有一个返回Promise的函数。该功能通过ADB在Android设备上调用键上或下事件。我称之为:

press(B_KEY, 3000, client, device)
  .then(function(result) {console.log("Key press done.");});

我想按顺序多次执行此操作(调用press)函数。我可以手动完成:

press(B_KEY, 3000, client, device)
  .then(function(result) {return press(B_KEY, 3000, client, device);})
  .then(function(result) {return press(B_KEY, 3000, client, device);})
  .then(function(result) {return press(B_KEY, 3000, client, device);})
  // ad nauseam

我希望有for循环之类的东西。我试着想到伪代码给你看,但我的任何想法都很难看。

如何使用Promises中的所有功能进行循环?

1 个答案:

答案 0 :(得分:1)

要实现您的目标,您可以使用mapSeries()在空数组上迭代n次:

    return Promise.mapSeries(new Array(4), function() {
        return press(B_KEY, 3000, client, device);
    });

有关mapSeries()的更多信息,请参阅reference