首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP GET请求,未收到"data chunks“

HTTP GET请求,未收到"data chunks“
EN

Stack Overflow用户
提问于 2020-05-02 05:28:57
回答 1查看 25关注 0票数 0

我有一个GET请求的问题。问题是数据变量没有填充,它是空的,但结果代码是200,没有问题。如果我在浏览器中手动打开链接,数据就在那里。下面是我的代码:

代码语言:javascript
复制
class DataHandler {
    constructor(httpRobot, config) {
        DataHandler.prototype.httpRobot = httpRobot;
        DataHandler.prototype.config = config;       
    }
}

class GetData extends DataHandler {
    constructor(httpRobot, config) {
        super(httpRobot, config);
    }
    R(RURL) {
        var data = '';

        super.httpRobot.get(RURL, (resp) => {
            console.log(resp.statusCode)
            resp.on('data', (chunk) => (
                data += chunk
            ))

            resp.on('end', () => {
                data = JSON.parse(data);
            })

        });
        console.log(data);
        return data;
    }
}

然后用以下命令调用它:

代码语言:javascript
复制
var httpRobot = require('http')
const GetData = require('./scripts/DataHandling/GetData')(httpRobot, config)
GetData.R('theurl')

当我调用R方法时,我给它提供了URL,它应该返回数据,但它没有。我已经检查过了,super.httpRobot确实包含http对象。请求正在执行,响应代码为200,但数据仍为空。这是一个我期望收到的JSON对象,我在过去成功地使用过这个代码,但我不明白为什么它现在不能工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-02 05:47:14

这是因为您不需要等待数据块被加载到数据中。在返回之前,您必须使用Promise或Callback来等待数据。

下面是一个使用Promise的示例:

代码语言:javascript
复制
class GetData extends DataHandler {
  constructor(httpRobot, config) {
    super(httpRobot, config);
  }
  R(RURL) {
    return new Promise((resolve, reject) => {
      let data = '';
      super.httpRobot.get(RURL, resp => {
        console.log(resp.statusCode);
        resp.on('data', chunk => (data += chunk));

        resp.on('end', () => {
          data = JSON.parse(data);
          console.log(data);
          resolve(data); //Resolving
        });
      });
    });
  }
}


var httpRobot = require('http');
const GetDataInst = new GetData(httpRobot, {});
GetDataInst.R('http://dummy.restapiexample.com/api/v1/employees').then(d=>console.log(d));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61551086

复制
相关文章

相似问题

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