Javascript 如何一次实现最大操作数
我想知道是否有可能一次执行最多操作数的事件。例如:Javascript 如何一次实现最大操作数,javascript,node.js,asynchronous,async.js,eventemitter,Javascript,Node.js,Asynchronous,Async.js,Eventemitter,我想知道是否有可能一次执行最多操作数的事件。例如: const myEvent = EventEmitter(); myEvent.on("calculate", (file) => { // async operation here // calls data event passing the data when finished. -> myEvent.emit("data", data); }); arrayOfFiles.forEach((file), () =&
const myEvent = EventEmitter();
myEvent.on("calculate", (file) => {
// async operation here
// calls data event passing the data when finished. -> myEvent.emit("data", data);
});
arrayOfFiles.forEach((file), () => {
myEvent.emit("calculate", file);
});
myEvent.on("data", (data) => {
// do something here.
});
我想一次只允许500个文件。所以我使用了async.eachLimit
:
const myEvent = EventEmitter();
myEvent.on("calculate", (file) => {
// async operation here
// calls data event passing the data when finished. -> myEvent.emit("data", data);
});
async.eachLimit(arrayOfFiles, 500, (file, callback) => {
myEvent.emit("calculate", file);
myEvent.on("data", (data) => {
callback();
});
}, (error) => {
if (error) return console.error(error);
console.log("done!");
});
这很好,但是可能有一种更好的方法可以做到这一点,而不必使用
异步。每个限制比一种方法更适合这个用例?你说的“允许”是什么意思?给谁?如果它的调用速度仍然比您希望的快,该怎么办?我正在生成子进程。。。如果我允许更快的速度,我可能会导致错误,如打开许多文件、内存异常等。为什么要使用事件发射器?直接插入async.eachLimit
看起来更容易构建,但我将包括其他事件。整个想法是下载一堆s3文件,提取每个文件的文本并提取数据。。。在当前情况下,我正在执行异步同步操作。。。首先,我下载所有内容,然后提取文本,然后提取数据。。。。我想做每件事都是异步的,但仍然限制一次异步操作的数量(每一次都是有限的)。。因此,api将下载文件=>extract the text=>extract the data=>直到最后一个到达。