是否有可能,for循环在nodejs中按时间迭代

is it possible, that for loop iterates by time in nodejs

let orders = [1, 2, 3, 4, 5, ..., 100];
let drivers = [1, 2, 3, 4, ..., 50];

for (let order of orders) {
  for (let driver of drivers) {
    // run 2nd iteration after 30 sec or one mint
  }
}

我有一个订单列表和 driver,我想将一个订单分配给一个 driver。如果 driver 拒绝订单 (g.e: Id=1) 相同的订单在 30 秒或 0ne 铸币后进入下一个 driver。 请指导我。 我已尝试 this 但在我的情况下无法正常工作。

一般来说,在给定的时间内阻塞线程并不是一个好的设计选择,但 OP 似乎已经足够了,所以我将尝试在没有的情况下回答它进入“最佳实践”领域。

您需要将这个双循环放在一个 async 函数中,并使用另一个异步函数将流程延迟给定的时间:

const delay = (msec) => new Promise((resolve) => setTimeout(resolve, msec));

let orders = [1,2,3,4,5,......100];
let drivers = [1,2,3,4,....50];

(async function main() {
  for (let order of orders) {
    for (let driver of drivers) {
      // (pseudocode) suggest the order to the driver
      driver.suggestOrder(order);

      // wait for half a minute
      await delay(30_000);

      // (pseudocode) don't suggest the same order to another driver
      if (driver.agreedToOrder(order)) break;
    }
  }
})();