CNode

新手关于supervisor和读取文件同步异步例子的问题

问答
Llinsen2015发布于11 年前最后回复11 年前2 回复3290 浏览0 收藏

现象1: npm install supervisor -g 安装supervisor后 执行下面js代码(安装后无任何修改) var http = require('http'); http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write('Node.js'); res.end('Hello Worldwwwwwwwwwwww'); }).listen(3000); console.log("HTTP server is listening at port 3000."); 描述1:其中wwwwwwww为后修改内容 执行supervisor D:\test\NoteJS\test.js 但cmd中的命令窗口没有任何变化 刷新浏览器wwwwwwww没有显示 问题1:是不是我修改了js文件的内容 supervisor应该重新启动后 取得最新的js文件内容? 没有被重新加载的原因大概有什么? ======================================================================= 描述2:var fs = require('fs'); fs.readFile('D:/test/NoteJS/file.txt', 'utf-8', function(err, data) { if (err) { console.error(err); } else { console.log(data); } }); console.log('end111.'); //////////////////////////////////////////////////////////////// var fs2 = require('fs'); var data2 = fs2.readFileSync('D:/test/NoteJS/file.txt', 'utf-8'); console.log(data2); console.log('end222.'); 描述2:上面两段代码写在同一js文件里了(file.txt的内容为aaaaaa) 预计输出end111 aaaaaa aaaaaa end222 实际输出end111 aaaaaa end222 aaaaaa 问题2:为什么同步也是先输出end222后输出文件内容aaaaaa (当我注释掉第一段代码 只剩下同步读取时 输出顺序为aaaaaa end222 )

查看回复

回复 (2)

D
dayuoba#1·11 年前

第一个问题,没用过supervisor模块,推断是个watch file 模块,建议到issues 里面看看有没有同类问题,实在不行换其他模块试试 第二个问题,首先指出以下var fs2=require('fs');没有实际意义 实际上引用的是同一个对象,第一次require的时候就已经根据路径建立缓存了。 之后关于同步异步的问题,你在console.log()中加入标记字符串就知道了。 你的end111 aaaaaa end222 aaaaaa实际是 end111 'sync'+'aaaaaa' end222 'async'+'aaaaaa' ,符合同步和异步逻辑。第一次aaaaaa就是同步读取 的内容。因为两次内容一致可能影响了你对顺序的判断

H
hezedu#2·11 年前

supervisor: 你文件保存了吗?

参与回复
登录后即可参与回复。登录