【问题标题】:Do something N times using Bluebird Promises使用 Bluebird Promises 做某事 N 次
【发布时间】:2016-09-24 14:24:19
【问题描述】:

我正在尝试每个人都非常兴奋的 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 循环。我试着想出伪代码来给你看,但我的任何想法都非常丑陋。

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

【问题讨论】:

  • @mdickin 我读过这个问题和其他几个问题。仅供参考,while lop 和 for 循环是不同的东西。
  • for 循环只是while 循环的子类。

标签: javascript bluebird


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-04-04
    • 1970-01-01
    • 2015-04-17
    • 2017-03-04
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    相关资源
    最近更新 更多