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

标签 javascript node.js http asynchronous

我正在尝试使用 node-rest-client Node.js 中的 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;
};

最佳答案

该模块内部使用 Node.js 的 native 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
});

关于javascript - Node.js:REST 客户端在返回之前返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20535689/

相关文章:

javascript - jade、express 和 mysql 结果

http - Angular2/错误 : Collection not found

javascript - Knockout.js:自定义绑定(bind)中的数组参数

javascript - Socket.io 心跳事件

javascript - 如何使用 TypeScript 导入自定义 node.js 插件模块

node.js - pg.Pool 不是构造函数

java - 将自定义协议(protocol)导入 MS Excel/Access

http - Wireshark 如何将 TCP 数据包的协议(protocol)识别为 HTTP?

javascript - 具有作用域的 JQuery 命名函数

javascript - jquery刷新页面,然后做一些事情