同步文件读取是否会阻止所有javascript执行,或者只是事件循环读取?
我使用节点模块jsonfile读取json文件,并使用express模块和res.json()路由它 据我所知,我不能使用异步读取,因为json的操作只能在回调中处理,因此实际上不可能返回数据并使用res.json()为其提供服务 这是我想要的,但实际上,这要么返回同步文件读取是否会阻止所有javascript执行,或者只是事件循环读取?,javascript,json,node.js,fs,Javascript,Json,Node.js,Fs,我使用节点模块jsonfile读取json文件,并使用express模块和res.json()路由它 据我所知,我不能使用异步读取,因为json的操作只能在回调中处理,因此实际上不可能返回数据并使用res.json()为其提供服务 这是我想要的,但实际上,这要么返回未定义的,要么返回承诺,具体取决于实现 同步读取文件会阻止整个服务器的执行,还是只阻止app.get('/api/announcements')的事件循环 另外,最正确的方法是什么?整个节点进程都有一个事件循环,因此同步读取将阻止所有
未定义的
,要么返回承诺
,具体取决于实现
同步读取文件会阻止整个服务器的执行,还是只阻止app.get('/api/announcements')的事件循环
另外,最正确的方法是什么?整个节点进程都有一个事件循环,因此同步读取将阻止所有事件。(经受住……)
您希望执行以下操作:
app.get('/api/announcements', function(req, res) {
//define anonymous function that will be used when getAnnouncements is done.
utils.getAnnouncements(function(err,fileData){
// handle if(err)
res.json(fileData)
})
})
getAnnouncements: function(callback) {
//read file async, using callback function to handle results
jsonfile.readFile('announcements.json', function(err, fileData) {
callback(err, fileData)
})
//or just `jsonfile.readFile('announcements.json',callback)`
}
app.get('/api/announcements', function(req, res) {
//define anonymous function that will be used when getAnnouncements is done.
utils.getAnnouncements(function(err,fileData){
// handle if(err)
res.json(fileData)
})
})
getAnnouncements: function(callback) {
//read file async, using callback function to handle results
jsonfile.readFile('announcements.json', function(err, fileData) {
callback(err, fileData)
})
//or just `jsonfile.readFile('announcements.json',callback)`
}