【发布时间】:2017-03-09 16:31:37
【问题描述】:
我正在尝试调用 API 以获取一些数据。当调用返回有效数据时,它就起作用了!但是,当它遇到 API 错误或我想根据数据响应创建的错误时,我会收到以下错误:
Unhandled rejection Error: Data not found!
at Request.request.post [as _callback]
.
.
这些是我正在使用的文件:
let grabSomeData = new BluebirdPromise((resolve, reject) => {
pullers.grabData(dataID, (err, res) => {
if (err) {
return reject(err);
}
return resolve(res);
});
});
grabSomeData.then((fulfilled, rejected) => {
console.log('res: ' + fulfilled);
console.log('rej: ' + rejected);
});
在我发出 http 请求的其他文件中,
grabData(dataID, grabDataCallback) {
let bodyObj = {
query: dataByIDQuery,
variables: {
id: dataID
}
};
// grab the data
request.post(
{
url: dataURL,
body: JSON.stringify(bodyObj)
}, (err, httpResponse, body) => {
if (err) {
return grabDataCallback(err);
}
let res = JSON.parse(body);
if (res.data.dataByID !== null) {
return grabDataCallback(null, res.data.dataByID);
}
return grabDataCallback(Boom.notFound('Data not found!'));
}
);
}
【问题讨论】:
-
console.log(res.data.dataByID)带给你什么 -
当有目的地测试错误时,它不会达到这个程度。它将显示上面的错误。在测试有效数据时,它会很好地打印数据@p0k8_
-
使用else块中的最后一个return语句
if(res.data.dataByID !== null) { return grabDataCallback(null, res.data.dataByID); } else { return grabDataCallback(Boom.notFound('Data not found!')); } -
@p0k8_ 刚试过这个,我得到了同样的错误。我相信这与我使用回调处理拒绝/解决的方式有关。
-
是的,您还没有声明
catch块来处理拒绝