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

就我而言,我有一个返回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中的所有功能进行循环?

最佳答案

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

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


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

关于javascript - 使用Bluebird Promises做N次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37463265/

10-13 01:53