嵌套请求被阻塞

我对nodejs比较新。 我最近把过去几个月收集的所有集体知识汇集到一个项目中。 我相信我已经在nodejs中遇到了我的第一个“阻塞”问题。

我有一个页面加载两个request()调用,他们是asynchronous和相应嵌套。 最内层的使用来自最内层的数据来redirect用户。

  request(parameters,function(error, response, data){ //the first request passes a token request(newParamters,function(error, response, data){ //the second request passes a url res.redirect(data.info.url); }); }); 

错误的是,当我在许多浏览器选项卡中打开它时,它会在第一对夫妇之后结束,然后服务器说data.info.url是未定义的。

我的问题是: 我是否应该一次只提出一项要求? 我可以保存令牌从第一个request()和redirect用户到第二个request()这将有助于? 我一直非常良心的asynchronous,而不是阻塞,我感到震惊,这是发生。 任何反馈将是伟大的!

像这样嵌套会导致很多问题。

我更喜欢这种模式,我把所有的东西都分解成更容易阅读的命名函数。

当一个函数完成时,它调用下一个等等。

 parameters = {}; //define parameters first(parameters); // call first function to kick things off. var first = function(parameters) { request(parameters,function(error, response, data){ newParamters = date.something; second(newParamters, data); //call second function }); }; var second = function(newParamters, data){ request(newParamters,function(error, response, data){ res.redirect(data.info.url); }); } 

这种模式是“非阻塞”的,所以当第一个请求被创build时,nodejs进程退出并继续收到响应,然后第二个函数被调用。

当第二个请求进行时,nodejs进程再次退出。 redirect只会在收到响应后才会发生。