Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何一次实现最大操作数_Javascript_Node.js_Asynchronous_Async.js_Eventemitter - Fatal编程技术网

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=>直到最后一个到达。