我正在使用一个小的获取包装程序对API进行fetch
调用,如果发生错误,该包装返回一个Promise.reject
。
function fetchErrorHandler(url, options) {
if (options == null) options = {};
if (options.credentials == null) options.credentials = 'same-origin';
return fetch(url, options).then( response => {
if (!response.ok) {
return Promise.reject(response);
}
return response;
})
}
fetch('/cool/api/')
.then(res => res.json())
.then(body => { //...})
.catch(error => {
// Let's do something smart.
});
我想做的是遍历Response
对象并保存键:值对。因此,在该catch块中有一些内容:
for (let item in error) {
if (error.hasOwnProperty(item)) {
log(error[item] + ': ' + item);
}
}
...但是不会产生任何结果。
在这里我可以想到两种可能性。 error
实际上是另一个Promise,在这种情况下,我需要做其他事情。或者,Response
对象没有OwnProperty
对象。无论哪种方式,我都不确定如何获取所需的数据。有什么线索吗?
顺便说一句,我也尝试过Object.keys(error)
并且发生了同样的事情