【发布时间】:2017-04-04 04:51:36
【问题描述】:
我有以下函数,它返回一个获取数据的承诺。我正在使用request npm 模块。
let getData = function (user) {
return new Promise(function (resolve, reject) {
let url = 'https://someurl.com/' + user;
request(url, function (error, res, body) {
if (error) reject(error);
try{
resolve(cleanData(JSON.parse(body).items))
}catch(e){
console.log(body)
console.log(url)
console.log(e);
}
})
})
}
当我履行我的承诺时,我有时会得到这样的结果:
SyntaxError: Unexpected token u in JSON at position 0
当我的身体被返回为未定义时,就会发生这种情况。但其他时候我也会得到这样的东西:
SyntaxError: Unexpected token f in JSON at position 11203
而其他时候(大多数时候),它会完美地完成。
我已经能够在调试时仔细检查这一点,似乎有时我会得到一个不完整的主体。我知道源网址中的正文并不完整。我通过直接使用浏览器访问 url 并确保 json 完整且有效来检查这一点。
发生了什么事?据我了解,request 函数的回调仅在响应准备好被使用时调用。
【问题讨论】: