调用 Riot-Api 我在 https GET 请求上接收到不完整的 JSON。
调试后,我意识到根据我等待(断点)预执行 https on'data' 回调的时间,我实际上收到了完整的 JSON 对象。
(我的平均 API 响应时间是 200-300 毫秒)
let getOptions = function(url) {
return {
host: 'na.api.pvp.net',
port: 443,
path: `${url}?api_key=${apiKey}`,
method: 'GET'
};
}
exports.Call = function(url, callback) {
let response = {};
let req = https.request(getOptions(url), function(res) {
response.statusCode = res.statusCode;
res.on('data', function(data) {
response.json = JSON.parse(data);
callback(response);
});
});
req.on('error', function(err) {
response.err = err;
callback(response);
});
req.end();
};
在没有断点的情况下运行代码或只中断很短的时间我会遇到错误:
JSON.parse(data): Unexpected Token in JSON at position ...
或者
JSON.parse(data): Unexptected end of JSON Input.
正如我期望的那样,只有在请求完成后才会执行“数据”回调,我对如何修复它感到困惑(没有人为地延迟它)。