Javascript 如何等待多个异步函数完成?
我开发了一个类,它几乎没有运行和更新数据库中数据的函数。 我想一次运行我的类的10个线程,并且每次运行一个线程时都要开始新的运行,这样总是有10个或更少的操作在运行 我怎样才能做到呢 代码示例:Javascript 如何等待多个异步函数完成?,javascript,node.js,Javascript,Node.js,我开发了一个类,它几乎没有运行和更新数据库中数据的函数。 我想一次运行我的类的10个线程,并且每次运行一个线程时都要开始新的运行,这样总是有10个或更少的操作在运行 我怎样才能做到呢 代码示例: const classobj = require("data.js"); let class1 = new Data(); let class2 = new Data(); ... //(8 more) class1.run(); class2.run();
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
谢谢大家! 如果Data.run函数返回承诺,则可以执行以下操作:
const classobj=requiredata.js;
const restartingPromise=promise=>{
承诺,然后=>{
重申承诺;
};
};
设class1=新数据;
设class2=新数据;
... //8个以上
重新启动PromiseClass1.run;
重新启动PromiseClass2.run;
...
当承诺解决时,您可以自行进行函数调用 常量随机延迟==>Math.floorMath.random*5+2*1000 const fakePromise=id=>newpromisers=>setTimeout=>{ console.log`class${id}已完成工作` 物件 },随机延迟 类MyClass{ 构造器{ this.id=id } 运行==>{ console.log`class${this.id}正在开始工作` 伪造承诺this.id.然后this.run } } //创建3个实例并调用。在每个实例上运行 […新阵列3] .map,i=>新的MyClassi+1 .forEachclassInstance=>{ classInstance.run
}您如何知道它何时完成?每个运行方法都需要解决一个承诺。然后,您可以通过在异步函数中等待它们或使用.then链来链接每一个。这里有这样的例子:你的标题说你想等待多个异步函数完成-是这样吗,还是想在它们完成后重新启动每一个函数?所以你希望一个无休止的承诺循环运行,如果一个解决了,它应该用10个再次运行?你可以选择一个递归的Promise.race来跟踪它的承诺。实际上,我有一些代码在这个方向上…Patrick-我可以添加一个标志,它将返回,但现在运行刚刚完成,它返回到范围