gpt4 book ai didi

javascript - 如何等待多个异步函数完成?

转载 作者:行者123 更新时间:2023-12-02 22:12:26 27 4
gpt4 key购买 nike

我开发了一个类,它几乎没有运行和更新数据库内部数据的函数。我想一次运行我的类的 10 个线程,并在每次完成其中一个线程时开始新的运行(因此总是运行 10 个或更少的操作)我怎样才能实现它?

代码示例:

const classobj = require("data.js");
let class1 = new Data();
let class2 = new Data();
... //(8 more)

class1.run();
class2.run();
... // (8 more)

// one one of the class1-10 is done i want it to start again

谢谢!

最佳答案

当 promise 解决时,您可以让函数调用本身

const randomDelay = () => (Math.floor(Math.random() * 5) + 2) * 1000

const fakePromise = id => new Promise(res => setTimeout(() => {
console.log(`class ${id} finished work`)
res()
}, randomDelay()))

class MyClass {
constructor(id) {
this.id = id
}

run = () => {
console.log(`class ${this.id} starting work`)
fakePromise(this.id).then(this.run)
}
}

// create 3 instances and call .run() on every one
[...new Array(3)]
.map((_, i) => new MyClass(i + 1))
.forEach(classInstance => {
classInstance.run()
})

关于javascript - 如何等待多个异步函数完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59518274/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com