Node.js和Express:如何在异步操作后返回响应

埃克尔

我是Node.js的新手,所以我仍然将注意力集中在异步函数和回调上。我现在的难题是如何在异步操作中从文件中读取数据后返回响应。

我的理解是,发送回复的方式是这样的(这对我来说也是如此):

app.get('/search', function (req, res) {
    res.send("request received");
});

但是,现在我想读取文件,对数据执行一些操作,然后在响应中返回结果。如果我想对数据执行的操作很简单,则可以执行以下操作-内联执行它们,并保持对res对象的访问权限,因为它仍在范围内。

app.get('/search', function (req, res) {
    fs.readFile("data.txt", function(err, data) {
        result = process(data.toString());
        res.send(result);
    });
});

但是,我需要执行的文件操作既冗长又复杂,以至于我已将它们分离到单独文件中的各自功能中。结果,我的代码看起来像这样:

 app.get('/search', function (req, res) {
    searcher.do_search(res.query);
    // ??? Now what ???
});

我需要打电话res.send才能发送结果。但是,我无法在上面的函数中直接调用它,因为它是do_search异步完成的。而且我不能在回调中调用它,do_search因为该res对象不在该范围内。

有人可以帮助我了解在Node.js中处理此问题的正确方法吗?

昆汀

要访问其他函数中的变量,当没有共享作用域时,请将其作为参数传递。

你可以只通过res,然后访问都querysend在函数内的一个变量。


出于关注点分离的目的,您最好传递一个回调。

然后,do_search只需要了解执行查询然后运行函数的知识即可。这使其更通用(从而可重用)。

searcher.do_search(res.query, function (data) {
    res.send(...);
});

function do_search(query, callback) {
    callback(...);
} 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js 服务器在某些请求后不返回响应

来自分类Dev

node.js请求对象-返回响应主体以进行进一步操作

来自分类Dev

如何在node.js + Express中同时支持json和jsonp响应?

来自分类Dev

如何在node.js + Express中同时支持json和jsonp响应?

来自分类Dev

如何使用Node JS Express响应xml?

来自分类Dev

Node.js - 在返回响应之前不运行数据库承诺

来自分类Dev

Node.JS-如何识别哪个异步HTTP GET响应在回调中返回数据?

来自分类Dev

如何在Node.js和Express中使用PATCH

来自分类Dev

WebApi如何在向用户返回响应后发送异步电子邮件?

来自分类Dev

我如何在响应 oracle DB 和 Node JS 中从 post API 返回受影响的行数据

来自分类Dev

发送响应后,如何在Node / Express中结束当前请求处理?

来自分类Dev

填充异步函数后返回数组 - Node.js

来自分类Dev

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

来自分类Dev

如何在Node.js的while循环中处理异步操作?

来自分类Dev

node.js 如何在异步操作之外保存变量以访问它的回调?

来自分类Dev

如何使用Express和Node进行异步调用

来自分类Dev

重定向后编辑响应(node.js和express)

来自分类Dev

如何在Node.js和MongoDb中的javascript中混合同步和异步代码

来自分类Dev

如何在Node.js Express应用中从远程URL发送文件作为GET响应?

来自分类Dev

如何在Express / Node JS中发送错误的HTTP响应?

来自分类Dev

Node.js用异步数据响应

来自分类Dev

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

来自分类Dev

如何从 node.js 中的异步函数返回值

来自分类Dev

如何在Node.js中解释和执行异步javascript?

来自分类Dev

如何在Node.js中执行一系列同步和异步功能

来自分类Dev

如何在 node.js 中的异步和条件循环中执行嵌套查询

来自分类Dev

Node.js / Express异步功能

来自分类Dev

如何在Node.js(express)上返回由{}而不是[]包围的json,从而使用knex和postgresql返回查询结果

来自分类Dev

如何在Node.js(express)上返回由{}而不是[]包围的json,从而使用knex和postgresql返回查询结果

Related 相关文章

  1. 1

    Node.js 服务器在某些请求后不返回响应

  2. 2

    node.js请求对象-返回响应主体以进行进一步操作

  3. 3

    如何在node.js + Express中同时支持json和jsonp响应?

  4. 4

    如何在node.js + Express中同时支持json和jsonp响应?

  5. 5

    如何使用Node JS Express响应xml?

  6. 6

    Node.js - 在返回响应之前不运行数据库承诺

  7. 7

    Node.JS-如何识别哪个异步HTTP GET响应在回调中返回数据?

  8. 8

    如何在Node.js和Express中使用PATCH

  9. 9

    WebApi如何在向用户返回响应后发送异步电子邮件?

  10. 10

    我如何在响应 oracle DB 和 Node JS 中从 post API 返回受影响的行数据

  11. 11

    发送响应后,如何在Node / Express中结束当前请求处理?

  12. 12

    填充异步函数后返回数组 - Node.js

  13. 13

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

  14. 14

    如何在Node.js的while循环中处理异步操作?

  15. 15

    node.js 如何在异步操作之外保存变量以访问它的回调?

  16. 16

    如何使用Express和Node进行异步调用

  17. 17

    重定向后编辑响应(node.js和express)

  18. 18

    如何在Node.js和MongoDb中的javascript中混合同步和异步代码

  19. 19

    如何在Node.js Express应用中从远程URL发送文件作为GET响应?

  20. 20

    如何在Express / Node JS中发送错误的HTTP响应?

  21. 21

    Node.js用异步数据响应

  22. 22

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

  23. 23

    如何从 node.js 中的异步函数返回值

  24. 24

    如何在Node.js中解释和执行异步javascript?

  25. 25

    如何在Node.js中执行一系列同步和异步功能

  26. 26

    如何在 node.js 中的异步和条件循环中执行嵌套查询

  27. 27

    Node.js / Express异步功能

  28. 28

    如何在Node.js(express)上返回由{}而不是[]包围的json,从而使用knex和postgresql返回查询结果

  29. 29

    如何在Node.js(express)上返回由{}而不是[]包围的json,从而使用knex和postgresql返回查询结果

热门标签

归档