我在互联网上寻找答案,但没有找到。
由于这个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
}
现在我的问题是,因为我只是在使用递归,所以如何使整个事情变得异步,一旦最后一次递归发生,如何包装所有内容并退还数据?
我知道答案了,
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请求的功能的对象,当您调用它时无关紧要,但是您需要该对象。感谢大家的关注!