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

标签 javascript angularjs node.js http variables

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

Node

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 调用时,即使 post 调用已经发出,url 变量还没有设置,所以 get 调用返回一个空字符串。在第二轮请求中,get 调用返回从第一次 post 调用设置的值,依此类推。

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

最佳答案

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

解决方法:

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。

您必须考虑这样一个事实,即您所有的路由处理程序都只是中间件,并且您必须生成响应或执行next 中间件。

在您的情况下,您想要处理请求并希望就此结束,需要发送一些响应。所以我们发送了 res.status(204).end();,意思是:没有要提供的内容

希望这对您有所帮助!

关于javascript - AngularJS:http 链调用问题和 NodeJS:在多个 http 调用中使用变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35809885/

相关文章:

javascript - Angular 1.2.24 : Testing directive throws undefined in scope. $摘要();

javascript - 如何从大型 json 对象中获取特定数据到 Jade mixin 中

javascript - Node JS : chaining promises which are using promises

javascript - IE 11 是否支持共享 WebWorker?

javascript - 通过rails-assets-pipeline使用jcountdown时,未捕获类型错误: $(. ..).countdown不是函数```

javascript - 如何在 ng-repeat 中使用动态 orderBy

node.js - 让 Node 进行 'understand' ES6 导入 (Babel)

javascript - jQuery hide() 针对 <p> 元素隐藏整个父 div 的背景

javascript - React-Redux 购物车 - 减少/增加商品数量

javascript - Angular如何在从服务器动态加载后编译整个jTable