Javascript AngularJS:http链调用问题和NodeJS:在多个http调用中使用变量问题

Javascript AngularJS:http链调用问题和NodeJS:在多个http调用中使用变量问题,javascript,angularjs,node.js,http,variables,Javascript,Angularjs,Node.js,Http,Variables,我在node.js文件中有一个get调用和一个post调用,这两个调用使用的变量与我在这些调用之外初始化为空字符串的变量相同。在post调用中,我设置了变量,而在get调用中,我将变量的值返回给请求该值的clientside angularjs。在我的angularjs文件中,我首先进行post调用,然后进行get调用,这意味着应该设置该值,并且在发出get调用并返回时该值应该可用。以下是我正在做的: NodeJS var myUrl= ""; app.post('/post', functio

我在node.js文件中有一个get调用和一个post调用,这两个调用使用的变量与我在这些调用之外初始化为空字符串的变量相同。在post调用中,我设置了变量,而在get调用中,我将变量的值返回给请求该值的clientside angularjs。在我的angularjs文件中,我首先进行post调用,然后进行get调用,这意味着应该设置该值,并且在发出get调用并返回时该值应该可用。以下是我正在做的:

NodeJS

var myUrl= "";
app.post('/post', function(req, res){
   myUrl = res.url;
}); 

app.get('/get, function(req, res){
    res.json({result: myUrl});
});
AngularJS:

var promise = $http.post('/post')
        .then(function(response){

            return $http.get('/get');

        }).then(function(response){
            console.log(response.data.result);
        });
我试过AngularJS promise连锁电话,但还是不起作用。我遇到的问题是,当我在第一轮请求中进行get调用时,url变量尚未设置,即使post调用已经发出,因此get调用返回一个空字符串。在第二轮请求中,get调用返回从第一次post调用中设置的值,依此类推


关于为什么会发生这种情况,以及如何解决此问题的建议,以便get调用在同一轮请求中返回post调用中设置的值(get调用在post调用完成时发出)?我是NodeJS的新手,因此非常感谢您的帮助

您的角度代码很好,尽管您遗漏了一件小事。我修改了你的代码并进行了测试,它可以正常工作

解决方案:

var myUrl= "";
app.post('/post', function(req, res){
   //not res.url
   myUrl = req.url;
   //Your missed this!
   res.status(204).end();
}); 

app.get('/get, function(req, res){
    res.json({result: myUrl});
});
说明:

没有
res.status(204.end()
res.send({})
res.json({})
调用只更新url,然后挂起,不执行任何操作,从不返回,最终将超时。因此,当您下次调用
/get
时,您将获得URL

您必须考虑到所有路由处理程序只是<代码>中间件< /代码>,并且必须生成响应或执行<代码>下< /COD>中间件.< /P> 在您的情况下,如果您想处理请求并在那里结束,则需要发送一些响应。因此我们发送了

res.status(204.end()
,意思是:
没有可提供的内容


希望这有帮助

有没有什么机制可以保证邮件在进入你的客户之前到达?如果不是,结果很有意义,因为它是异步的。@RayonDabre我在帖子中更新了我的代码,它是从服务器返回的url。很抱歉造成混淆,您是否在
post
成功回调之后发出
get
调用?是的,我尝试将get调用放在客户端和服务器端的成功回调中。不走运。你的服务器端代码是find。只要确保在客户端代码中,GET在POST完成之前不会出现问题。我明白你的意思。我更改了代码并添加了缺少的行,但仍然不起作用。我在两个调用中都做了一些print语句,似乎get调用中的print语句首先被打印出来,然后是post调用中的print语句。在这种情况下,我不确定这是客户端问题还是服务器端问题。我修好了!我发现,如果我只是在第一次post调用中返回数据,我就不必再进行另一次get调用来检索url。谢谢你的帮助!:)