Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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 如何保证节点'的执行顺序;s流作者?_Javascript_Node.js_Streamwriter - Fatal编程技术网

Javascript 如何保证节点'的执行顺序;s流作者?

Javascript 如何保证节点'的执行顺序;s流作者?,javascript,node.js,streamwriter,Javascript,Node.js,Streamwriter,如何更改此代码: const fs=require('fs'); 让列表=['a','b','c']; list.forEach(x=>{ console.log('processing'+x); 放出_path=x+'.txt'; 让writeStream=fs.createWriteStream(out\u路径); writeStream.write('这里会有很多东西','utf8'); writeStream.on('finish',()=>{ console.log(out_path+

如何更改此代码:

const fs=require('fs');
让列表=['a','b','c'];
list.forEach(x=>{
console.log('processing'+x);
放出_path=x+'.txt';
让writeStream=fs.createWriteStream(out\u路径);
writeStream.write('这里会有很多东西','utf8');
writeStream.on('finish',()=>{
console.log(out_path+‘saved’);
});
writeStream.end();
});
要获得此信息:

processing a
a.txt saved
processing b
b.txt saved
processing c
c.txt saved
与此相反:

processing a
processing b
processing c
a.txt saved
b.txt saved
c.txt saved
?

如果我在
forEach
循环中构建一个对象,然后使用
fs.writeFile
将每个对象写入到文件中,那么效果很好。。。但我不能这样做,因为我正在编写大量数据(GBs),很快就会达到堆的极限。

使用异步等待

(async () => {
  const fs = require('fs');

  let list = ['a', 'b', 'c'];
  for (let x of list) {
    console.log('processing ' + x);
    let out_path = x + '.txt';
    let writeStream = fs.createWriteStream(out_path);
    writeStream.write('a lot of stuff will go here', 'utf8');
    writeStream.end();
    await new Promise(resolve => {
      writeStream.on('finish', () => {
        console.log(out_path + ' saved');
        resolve();
      });
    })  
  }
})();
writeStream.end()确实需要高于承诺=),然后一切正常!谢谢