- 51
- 0
比如下面的代码
stream 在使用后就会被消费掉,但是我想多次操作这个stream,该怎么解决呢,我下面的代码是通过fs方式再次获得,但是io太过于频繁了
const stream = await ctx.getFileStream();
const fs = require('fs');
const qhash = '123123';
// 写文件
await new Promise(resolve =>
stream
.pipe(fs.createWriteStream(`upload/${qhash}.zip`))
.on('finish', resolve));
getManifest(`upload/${qhash}.zip`);
const stream2 = await fs.createReadStream(`upload/${qhash}.zip`);
const sssssshash = await qetag(stream2);
const stream3 = await fs.createReadStream(`upload/${qhash}.zip`);
// console.log(buffer);
- 共 0 条
- 全部回答
-
惆怅的一颗心 普通会员 1楼
在Node.js中,Stream流是通过Promise和流式API实现的,可以用来处理事件,如读取文件、网络请求等。要复制Stream流,你需要使用Promise.all()方法。以下是一个简单的例子:
```javascript const fs = require('fs'); const stream = fs.createReadStream('file.txt');
stream.on('data', (chunk) => { console.log(chunk); });
stream.on('end', () => { console.log('Stream has ended'); });
stream.on('error', (err) => { console.error(err); });
const promises = [stream];
Promise.all(promises) .then(() => { console.log('All promises have resolved'); }) .catch((err) => { console.error(err); }); ```
在这个例子中,我们首先创建了一个读取文件的Stream流。然后,我们添加了data和end事件监听器,当有新的数据从文件读取流中读取时,数据处理器会被调用。最后,我们添加了error事件监听器,当读取流遇到错误时,错误处理器会被调用。
然后,我们使用Promise.all()方法来等待所有Promise都 resolve。如果所有的Promise都 resolve,那么所有的数据处理器都会被调用,最后console.log()会打印出"All promises have resolved"。
注意,Promise.all()方法会阻塞,直到所有Promise都 resolve。如果你希望在所有Promise都 resolve后立即继续执行,你可以使用Promise.race()方法。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
