想问,怎么把callback函数的内容拿出来。。
发布于 4 年前 作者 nichousha233 3457 次预览 最后一次回复是 4 年前 来自 问答
const fs = require('fs')
var text
fs.readFile('./test.txt', {encoding:''}, function(err, data){
if(err){
console.log(err);
}else{
text = data.toString()
console.log(data.toString());
}
});
console.log('This is the end.')
console.log('out:',text)
输出
This is the end.
out: undefined
This is a test file.
怎么让那个out等到text被赋值了再输出啊
14 回复
nodejs 回调是异步的, 最原始的方法不能用同步的逻辑写, 你要嘛在 else 里面处理, 要嘛用现在的标准 Promise, async/await
@yviscool 能具体点给个示例么?
尽量不要用 Sync 同步函数。。对于nodeJs原生的 callback api ,统一可以用util.promisify转成 promise
await fs.readFile(…)
推荐 fs-extra, 简单实用 https://www.npmjs.com/package/fs-extra
现在
fs标准库已经支持 Promise 了 https://nodejs.org/dist/latest-v14.x/docs/api/fs.html#fs_promise_example:@qichangjun 非常感谢,你的脚本的第17行 我测试了下 符合我的需求,不过提醒下,你的脚本的第17行缺了个“=>”好像
@index-js 是的,对于这个例子是没错的,但是我其实想要对于其他的没有类似readFileSync的函数的解决办法
@guojingkang 谢谢您的建议
@ilss 谢谢您的回复
@InCodingNowLiu 谢谢您的回复
@leizongmin 谢谢您的回复,我想要的是一种通解,而不是针对这个特定的文件读取函数的特解。
let ss = fs.createReadStream(’./test.txt’); let str = “”; for await (let chunk of ss) { str += chunk; } console.log(‘str’, str);