我已经成功编写了一些nodejs HTTP处理程序来响应HTTP请求提供数据。但是,我编写的所有内容都一直在使用* Sync版本的函数。我现在很快遇到了这种方法的局限性。
但是,我无法弄清楚如何在HTTP请求上下文中正确使用异步函数。如果我尝试异步调用,则处理会迅速失败并返回,而不会给代码提供处理数据的机会。
正确的方法是什么?我还没有找到任何好的例子,因此对文学的任何指望都值得赞赏。简而言之,这是一个用于GET请求的处理程序示例,该处理程序扫描本地目录,并返回文件名和相应行数的json列表(或上述显示正确技术的任何存根代码) 。
这是一个简单的示例:
var http = require('http')
var fs = require('fs')
function dir (req, res) {
fs.readdir('.', function (error, files) {
if (error) {
res.writeHead(500)
res.end(error.message)
return
}
files.forEach(function (file) {
res.write(file + '\n')
})
res.end()
})
}
var server = http.createServer(dir)
server.listen(7000)
运行node server.js
并使用进行测试curl :7000
。
是,在执行readdir回调之前,请求处理程序将返回。那是设计使然。这就是异步编程的工作方式。没关系。文件系统IO完成后,将执行回调并发送响应。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句