如何在Node.js上发出FAST同步请求

时间:2017-05-09 08:49:45

标签: node.js asynchronous httprequest synchronous

我已经使用从客户端(使用ajax)到服务器端(Nodejs)的同步(http请求)调用来转换程序。在那之后,该程序所需的时间比它花了4倍。

我得到了#undefined'当我使用异步调用时返回函数。 所以,我尝试了两种同步调用方式,两者都需要很长时间。

是否有很好的方法可以让身体恢复'在下面的函数中,使用异步调用? 或者,使用FAST同步通话?

function getBody(input) {

  //sync call-TRY.1
  var body_return;
  request(option, function(error, response, body) {
    if (!error && response.statusCode === 200) {

       //do something with body;
       body_return = dosomething(body);
     }
  });

  //sync call-TRY.2
  var body = sync_request('POST', '(uri)', options).getBody('utf8');
  var body_return = dosomething(body);

  //async call can't return the body in time, so this function returns undefined..

  return body_return;
}

1 个答案:

答案 0 :(得分:0)

由于node.js的异步性,您的函数返回undefined。 当你真正得到答复时,你应该在body_return内返回callback of request

function getBody(input) {

//this is async call
  var body_return;
  request(option, function(error, response, body) {
    if (!error && response.statusCode === 200) {

   //do something with body;
   body_return = dosomething(body);

   //return when you get the response
   return body_return;
 }

  });  
}