Nodejs:等待多个请求返回响应

问题描述 投票:-1回答:1

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

由于这个https://www.youtube.com/watch?v=8aGhZQkoFbQ出色的视频,我对事件循环进行了一些研究。

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

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

我有一个nodejs express角度应用程序。我在前端有一个表格。我用此表单向节点服务器发出了一个发布请求,而不是获取并处理该数据,然后开始向服务器发出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(){}
}

基本上,一旦您定义了要重复执行功能的时间,就完成了。现在,我需要等到一切结束,然后再将整个数据还给有角度的人

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

现在我的问题是,因为我只是在使用递归,所以如何使整个事情变得异步,一旦最后一次递归发生,如何包装所有内容并退还数据?

javascript angularjs node.js express asynchronous
1个回答
0
投票

我知道答案了,

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请求的功能的对象,当您调用它时无关紧要,但是您需要该对象。感谢大家的关注!

© www.soinside.com 2019 - 2024. All rights reserved.