AngularJS:http链调用和NodeJS的问题:在多个http调用中使用variables的问题

我在我的node.js文件中有一个get调用和一个post调用,它们都使用与我在这些调用之外初始化为空string相同的variables。 在post调用中,我设置了variables,而在get调用中,我将该variables的值返回给我的客户端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诺言链调用,但它仍然无法正常工作。 我遇到的问题是,当我在第一轮请求中进行get调用时,即使post调用已经发出,urlvariables还没有被设置,所以get调用返回一个空string。 在第二轮请求中,get调用返回从第一个post调用中设置的值,依此类推。

关于为什么会发生这种情况的任何想法以及有关如何解决此问题的build议,以便get调用返回同一轮请求中的post调用中设置的值(get调用在调用完成后发出)? 我是相当新的NodeJS所以任何帮助表示赞赏!

你的angular码很好,虽然你错过了一件小事。 我修改了你的代码并进行了testing,它按预期工作。

解:

 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({}) /post调用只是更新url,然后挂在那里,什么都不做,永远不会返回,并最终超时。 所以当下一次你打电话/get你的url。

你必须考虑到所有的路由处理器只是middleware ,你必须生成一个响应或执行next中间件。

在你的情况下,你想处理请求,并希望在那里结束,它需要发送一些回应。 所以我们发送了res.status(204).end(); ,意思是: There is no content to serve

希望这可以帮助!