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()代码>确实需要高于承诺=),然后一切正常!谢谢