Nodejs等待多次reuqest给出响应

时间:2017-08-14 15:45:28

标签: javascript angularjs node.js express asynchronous

我查看了互联网寻找答案,但我找不到。

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

我的问题仍未解决。我尝试过承诺和回调但我的问题就在于此。因为我调用了一个函数,里面有异步函数,所以如果我把回调,它会等待函数的结束而不是异步函数。

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

我有一个nodejs表达角应用程序。我在前端有一个表格。我用这个表单向我的节点服务器发出一个帖子请求,而不是我抓住这个数据我处理它,然后我开始向服务器发出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")
}

这是关于我对表单的处理,因为你可以看到问题是当我打电话给#34; 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
}

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

1 个答案:

答案 0 :(得分: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是一个拥有函数来回答来自角度的POST请求的对象,所以当你调用它时你需要这个对象。 感谢大家的关注!