【问题标题】:Nodejs: wait for multiple requests to return a responseNodejs:等待多个请求返回响应
【发布时间】:2019-10-26 06:22:56
【问题描述】:

我在互联网上寻找答案,但没有找到。

感谢这个 https://www.youtube.com/watch?v=8aGhZQkoFbQ 精彩视频,我对事件循环进行了一些研究。

我的问题仍然没有解决。我尝试了承诺和回调,但我的问题已经解决了。因为我调用了一个内部有异步函数的函数,所以如果我放置回调,它将等待函数结束而不是其中的异步函数。

所以我请你帮忙。我请求帮助 XD 我越来越了解 javascript 所以这就是我的问题:

我有一个 nodejs express angular 应用程序。我在前端有一个表格。我用这个表单向我的节点服务器发出一个 post 请求,而不是我处理这个数据,然后我开始向服务器发出 6 个请求。在这 6 个请求结束时,我需要将数据发送回前端,所以现在我告诉你我没有得到什么

app.post('/api/todos', function(req, res) {
    var from = (new Date(req.body.from)).getTime();
    var to = (new Date(req.body.to)).getTime();
    var partner = req.body.partner;
    var POS = req.body.POS;

    Request.request(from,to,partner,POS);
    res.send("data")
}

这是关于我对表单的处理,您可以看到问题是,当我调用“Request.request”时,即使我回电,它也会在数据到来之前完成,因为“request.request”是同步函数,这6个请求都是异步的。

我给你一个提示,我的请求是多次提出的,但如果我总结它会更容易。

Request.request(){
    res.end(){
        savedata**;
        if (recursionIndex<y)
            indexRequest();
        else
            bodyRequest()
    } //async request

    req.end(){}
}

基本上一旦你定义了你想要重复你完成的功能的次数。现在我需要的是等到一切结束,而不是把整个数据还给 angular

bodyRequest(){
    // Same logic of before I didnt use any callback I just used recursion
}

现在我的问题是,因为我只是使用递归,我怎样才能使整个事情异步,我怎样才能包装所有东西并在最后一次递归发生后返回数据?

【问题讨论】:

  • 你的伪代码太伪了。看起来像 Promise.all 用例。
  • 你看过async模块吗?根据您想要达到的目标async.waterfallasync.series 可以帮助您以干净的方式处理这 6 个请求。

标签: javascript angularjs node.js express asynchronous


【解决方案1】:

我得到了答案,伙计们,

app.post('/api/todos', function(req, res) {
   var from = (new Date(req.body.from)).getTime();
   var to = (new Date(req.body.to)).getTime();
   var partner = req.body.partner;
   var POS = req.body.POS;

   Request.request(from,to,partner,POS,res);

   //res.send("data")
    }

我将“res”传递给我的 Request.request 并通过所有子函数,技巧就完成了!

因为 res 是一个对象,它拥有回答来自 angular 的 POST 请求的功能,所以调用它时并不重要,但你需要该对象。 感谢大家的关注!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2020-04-20
    • 2014-04-24
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多