使用异步Node.JS来服务HTTP请求

德米特里B.

我已经成功编写了一些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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.JS-使用异步功能处理传入的请求

来自分类Dev

使用Node.js异步请求在Redis中进行循环

来自分类Dev

Node.JS-使用异步功能处理传入的请求

来自分类Dev

使用Node.js异步请求在Redis中进行循环

来自分类Dev

在node.js中使用异步瀑布

来自分类Dev

在node.js中使用异步模块

来自分类Dev

在node.js中使用异步模块

来自分类Dev

仅使用Node.js进行异步HTTP(S)遍历

来自分类Dev

使用循环在Node.js中进行异步作业调度

来自分类Dev

Node.js:如何使用异步模块执行无限循环

来自分类Dev

使用累加器遍历Node.js异步目录

来自分类Dev

使用异步作业在node.js / express中正常关闭

来自分类Dev

使用forEach时,与node.js异步流混淆。

来自分类Dev

使用Node.js从异步函数返回列表

来自分类Dev

如何使用C#完成Node.js的异步性?

来自分类Dev

如何抓取使用node.js异步加载数据的网站?

来自分类Dev

如何在Node.js中使用异步映射系列?

来自分类Dev

在Node.js / Express中使用异步Postgres的正确方法?

来自分类Dev

Node.js-使用多个查询异步构建JSON

来自分类Dev

使用累加器遍历Node.js异步目录

来自分类Dev

使用async.forEach和异步操作的Node.js

来自分类Dev

使用node.js硒异步的页面对象模式

来自分类Dev

在Node.js中使用异步瀑布进行函数迭代

来自分类Dev

使用Node.js和Java异步获取MQTT数据

来自分类Dev

使用Node.js异步保存到dynamodb

来自分类Dev

如何在异步 Node.JS 中使用 MySQL

来自分类Dev

使用异步与 mongoDB 时如何修复 node.js 返回 {}

来自分类Dev

Youtube API在node.js Express中使用异步处理多个相关请求

来自分类Dev

Node.js For循环异步请求

Related 相关文章

热门标签

归档