Node.js:REST客户端在返回之前返回值

Ram*_*esh 0 javascript asynchronous http node.js

我试图在Node.js中使用node-rest-client REST客户端.

当我使用以下代码时,它会返回,null但控制台会在此之后打印响应.如何使用REST客户端进行同步调用?

var postRequest = function(url, args) {
  var client = new Client();
  var responseData = {};

  client.post(url, args, function(data, response) {
    responseData = data;
    console.log(responseData);
  });

  return responseData;
};
Run Code Online (Sandbox Code Playgroud)

hex*_*ide 6

该模块内部使用Node.js的本机HTTP方法,因此它们不是同步的.您无法将异步功能转换为同步功能,因此您需要使用回调:

var postRequest = function(url, args, callback) {
  var client = new Client();
  var responseData = {};
  client.post(url, args, function(data, response) {
    responseData = data;
    callback(responseData);
  });
};
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样调用函数:

postRequest(url, args, function(response) {
  // response
});
Run Code Online (Sandbox Code Playgroud)