是否有可能,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;
}
}
})();
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;
}
}
})();