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

时间:2013-12-12 05:24:41

标签: javascript node.js http asynchronous

我正在尝试在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;
};

1 个答案:

答案 0 :(得分: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);
  });
};

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

postRequest(url, args, function(response) {
  // response
});