gpt4 book ai didi

Node.js:如何将 readStream 作为函数参数传递并在回调中使用?

转载 作者:行者123 更新时间:2023-12-02 02:06:56 24 4
gpt4 key购买 nike

我想将流作为参数传递给函数并在异步回调中使用它,但它已被销毁(stream.readable 为 false)

例如:

var test = require('./test');
var file = fs.createReadStream('./file.txt');
test(file, console.log);

在 test.js 中:

module.exports = function(stream, callback) {
//stream.pipe(process.stdout); ///////// STREAM IS READABLE HERE
doSomething('abc', function(err) {
stream.pipe(process.stdout); ///////// STREAM IS NOT READABLE HERE
callback(err);
});
};
enter code here

为什么会这样?
我该怎么做才能在回调中使用它?

最佳答案

发生这种情况是因为流在您尝试通过管道传输之前就结束了。首先,流是可读的,因为您的同步代码仍在工作。在第二个地方(在回调内部)流已经结束,因为回调可能会在未来的几个滴答后执行。如果你想在未来阅读它,你需要暂停你的流。此代码应该有效:

var test = require('./test');
var file = fs.createReadStream('./file.txt');
file.pause();
test(file, console.log);

测试.js

module.exports = function(stream, callback) {
doSomething('abc', function(err) {
stream.resume();
stream.pipe(process.stdout);
callback(err);
});
};

关于Node.js:如何将 readStream 作为函数参数传递并在回调中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14568124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com