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
希望这可以帮助!