gpt4 book ai didi

javascript - NodeJs : fs. appendFile 函数似乎错过了给出的最后一个字符串

转载 作者:太空宇宙 更新时间:2023-11-04 00:45:12 25 4
gpt4 key购买 nike

我是nodejs新手,我正在尝试附加功能。当我运行下面的代码时,只需在提示用户后输入有关最喜欢的歌手的信息,然后将其放入包含歌手姓名的文件中。并附加最喜欢的歌曲,似乎如果用户输入退出,则应该将其附加到文件中,但是,它不是???同时,如果添加对appendFileSync(fn的同步版本)退出的更改?

代码:

var readline = require ('readline');
var fs = require('fs');
var rl = readline.createInterface(process.stdin, process.stdout);
var singer = {
name:'',
songs: []
};

rl.question("What is your fav singer? ", function(answer) {
singer.name = answer;

//creating a file for this singer
fs.writeFileSync(singer.name+".md", `${singer.name}\n====================\n\n`);

rl.setPrompt(`What's your fav songs for ${singer.name} ?`);
rl.prompt();

rl.on('line', function(song) {
singer.songs.push(song.trim());
fs.appendFile(singer.name+".md", `* ${song.trim()} \n`);
//***** WHY IF ITS EXIT ITS NEVER APPEND IT TO THE FILE
console.log(`* ${song.trim()} \n`);

if (song.toLowerCase().trim() === 'exit') {
fs.appendFile(singer.name+".md", "Bye");
//***** WHY ITS NEVER APPEND IT TO THE FILE
rl.close();
} else {
rl.setPrompt(`what else would ${singer.name} say? ('exit'to leave)`);
rl.prompt();
}
});
});

rl.on ('close', function() {
console.log ("%s is a real person that says %j", singer.name, singer.songs);
process.exit();
});

最佳答案

因为fs.appendFile是异步的。当你调用它时,io 操作只会排队。不幸的是,您的脚本在真正的 io 操作发生之前就退出了。

所以。您必须将 fs.appendFileSyncfs.appendFile 与回调(第三个参数)一起使用,并在调用回调时执行所有进一步的事件。

关于javascript - NodeJs : fs. appendFile 函数似乎错过了给出的最后一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019147/

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