首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >q-io:如何使用承诺读取response.body JSON对象?

q-io:如何使用承诺读取response.body JSON对象?
EN

Stack Overflow用户
提问于 2016-01-28 18:55:39
回答 2查看 3.4K关注 0票数 2

我需要从一台服务器向另一台服务器发出http请求。

处理此请求的服务器将只返回一个JSON对象:

代码语言:javascript
代码运行次数:0
运行
复制
app.get('/array', function (req, res) {
  console.log('GET request received!');
  var response_array = [
    {
      value: 1234
    },
    {
      value: 1234
    },
    {
      value: 55
    }
  ];

  res.send(response_array);
});

我使用q-io向GET方法/array发送http请求并获得数组:

代码语言:javascript
代码运行次数:0
运行
复制
var _getArray = function(externalUrl) {
  var request = {
    method: "GET",
    url: externalUrl
  };

  return HTTP.request(request)
    .then(function(response) {
      // I need to return the Array inside the body (a Promise) to
      // iterate on it later
      return response.body.read(); // but .read() returns a Buffer
    });
}

这两台服务器都正常工作,因为请求被正确地从一个发送和接收到另一个,并且响应也是正确的。

我拥有的问题是,我没有实现获得JSON -因为read()返回一个缓冲区,而response.body不返回数组(正如文档所说的,它返回一个可读流的表示).如何正确地处理这一问题以正确地获得和承诺

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-28 19:41:29

如果可以获得响应主体内容的承诺,则可以通过JSON.parse传递JSON有效负载。

代码语言:javascript
代码运行次数:0
运行
复制
return HTTP.request(request)
  .then(function(response) { return response.body.read() })
  .then(JSON.parse);
票数 2
EN

Stack Overflow用户

发布于 2016-01-28 19:08:11

从医生那里,https://github.com/kriskowal/q-io#body

似乎您必须使用forEach来获取所有的项目

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35069699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档