关于process.stdout和异步运行机制的问题
各位社区的高手们!由于本人刚刚开始学习Node.js还不是很熟悉一些内部运行机制!最近写了一个小程序!具体的功能描述和代码如下贴出!基本的运行没有问题,但是总是重复输出一些东西,很是困惑!!!望解答!!! 问题描述在最后!!!! /**
- 功能及步骤
- 1.手动输入一个目录,程序自动定位到该目录
- 2.根据输入文件名,在该目录下创建该文件
- 3.输入内容,将输入的内容写入该文件 */
var fs = require(‘fs’), stdin = process.stdin, stdout = process.stdout, //获取输入的要定位的新目录 filepath = “”; stdout.write(" 请输入要定位的目录:"); stdin.resume(); stdin.setEncoding(‘utf-8’); stdin.on(‘data’, function (data) { //改变当前的工作目录 try { stdin.pause(); process.chdir(data.trim()); createfile(); } catch (err) { stdout.write(" 请输入要定位的目录:"); } });
/**
- @todo 创建文件 */ function createfile() { stdout.write(" 请输入文件名:"); stdin.resume(); stdin.setEncoding(‘utf-8’); stdin.on(‘data’, function (data) { stdin.pause(); filepath += data.toString(); writefile(filepath); }); };
/**
- @todo 写文件
*/
function writefile(filepath) {
stdout.write(" 请输入要写的内容:");
stdin.resume();
stdin.setEncoding(‘utf-8’);
stdin.on(‘data’, function (data) {
fs.writeFile(filepath.trim(), data, function (err) {
if(err) {
console.log(“写入错误” + err);
} else {
console.log(‘保存成功!’);
} }); }); }; 运行结果(模拟的一个终端): E:\nodejs\Demo\node.js学习\file-explorer\js>node writefile.js 请输入要定位的目录:e://nodejs 请输入文件名:yi.js 请输入要定位的目录: 请输入要写的内容:123344 请输入要定位的目录: 请输入要写的内容:保存成功! 问题:最后两行重复输出了!很困惑!!(如果不清楚可以运行一下!) 希望高手们可以解决!!!谢谢!!!
1 回复