Javascript Node.js更新客户端可访问的JSON文件
一个初学者的问题,因为我是新的网络编程。我正在使用MEAN堆栈并在服务器中编写一个JSON文件,以便向任何连接的客户端提供一些天气信息 我使用节点调度库每小时更新一次JSON文件。如果客户端同时试图访问文件的数据,那么从服务器不断更新文件会导致并发问题吗 下面的代码片段: server.jsJavascript Node.js更新客户端可访问的JSON文件,javascript,json,node.js,mean-stack,Javascript,Json,Node.js,Mean Stack,一个初学者的问题,因为我是新的网络编程。我正在使用MEAN堆栈并在服务器中编写一个JSON文件,以便向任何连接的客户端提供一些天气信息 我使用节点调度库每小时更新一次JSON文件。如果客户端同时试图访问文件的数据,那么从服务器不断更新文件会导致并发问题吗 下面的代码片段: server.js function updateWeatherFile() { var weather = require('weather-js'); var w = ""; weather.find({sea
function updateWeatherFile() {
var weather = require('weather-js');
var w = "";
weather.find({search: weatherSearch, degreeType: 'C'}, function(err, result) {
if(err)
console.log(err);
w = JSON.stringify(result, null, 2);
fs.writeFile('public/weather.json', w, function(err) {
if(err) {
console.log(err);
}
});
});
}
if(scheduleWeather) {
var schedule = require('node-schedule');
var sequence = '1 * * * *'; // cron string to specify first minute of every hour
var j = schedule.scheduleJob(sequence, function(){
updateWeatherFile();
console.log('weather is updated to public/weather.json at ' + new Date());
});
}
else {
updateWeatherFile();
}
client_sample.js
// get the current weather from the server
$http.get('weather.json').then(function(response) {
console.log(response['data'][0]['current']);
vm.weather = response['data'][0]["current"].skytext;
vm.temperature = response['data'][0]["current"].temperature;
});
NodeJs是单线程环境 但是,“读取和写入文件”节点启动外部进程,最终可以访问该文件以同时读取和写入。在这种情况下,并发不是由节点处理的,而是由操作系统处理的
如果您认为这种并发可能会损害程序,请考虑使用一个锁文件作为注释和解释。