【发布时间】: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.waterfall或async.series可以帮助您以干净的方式处理这 6 个请求。
标签: javascript angularjs node.js express asynchronous