我正试图使用NodeJS提供的FileSystem模块写入.txt文件。然而,它没有运行,也没有显示任何错误。根据进一步的预期,我还可以判断read/writeFileSync的回调没有运行。
utils.js
writeFile(path,encoding)
{
console.log('debug write')
fs.writeFileSync(path,encoding,(err)=>{
if(err) console.log(this.errorCodes.state.err004);
else console.log('success');
return;
});
return;
}
readFile(path,encoding)
{
console.log('debug read')
return fs.readFileSync(path,encoding,(err)=>
{
if(err) console.log(this.errorCodes.state.err004)
});
}
state.js
//returns data from state
async get(key)
{
//root not updating to interact with state
this.utils.readFile('./tempRoot.txt','utf8');
console.log(this.root)
const value = await this.trie.get(Buffer.from(key));
console.log(value.toString())
return
}
//sets data in state
async set(key,value)
{
await this.trie.put(Buffer.from(key),Buffer.from(value));
this.setRoot();
return;
}
//set root of state
setRoot()
{
const root = this.getRoot().toString('hex');
console.log(root)
this.utils.writeFile('./tempRoot.txt',root);
}
我的猜测是,同步操作是在异步函数中调用的,但我不明白为什么会有效果,因为它只是等待然后执行文件写入/读取函数?
问题:我做错了什么?如果是异步函数,那会有什么影响呢?
由于我没有足够的声誉发表评论,我将链接答案:fs.writeFileSync不接受回调
fs.writeFileSync
函数不采用参数来传递回调函数,而是抛出一个要捕获的错误;请参阅文档:fs.writeFileSync
回调函数在另一个函数完成执行后运行。独立执行的异步函数需要这样的等待。另一方面,同步函数会阻塞控制流,从而不需要回调函数。