如果没有特定的密钥,如何服务错误,但应该是

共1个回答,已解决, 标签: javascript object promise fetch

我正在使用 fetch onhttps://www.googleapis.com/books/v1/volumes?q=wiedzmin . If you go to this link you can see that it is not any "volumeInfo.authors" in 9th object (from line 545 to 602). It gives me an error: Uncaught (in promise) TypeError: Cannot read property 'join' of undefined

我想做一个逻辑,比如 “如果有错误返回“ 找不到值 ”,代码执行会更进一步。

我的代码:

获取 (“https://www.googleapis.com/books/v1/volumes?q=wiedzmin”)
。然后 (resp => resp.json ())
。然后 (x => {

控制台日志 (作者:)
对于 (设 i = 0; i <= x。项目。长度-1; i) {
控制台.日志 (x.项目 [i].volumeInfo.authors.join (','))
}

)'
第1个答案(采用)

你可以试试x.items[i].volumeInfo.authors if it is undefined然后默认空数组让错误不会发生:

获取 (“https://www.googleapis.com/books/v1/volumes?q=wiedzmin”)
。然后 (resp => resp.json ())
。然后 (x => {
控制台日志 (作者:)
对于 (设 i = 0; i <= x。项目。长度-1; i) {
控制台.log ((x.项目 [i].volumeInfo.authors | | []).join (','))
}
})

或者如果你想忽略x.items[i].volumeInfo.authors is undefined你仍然可以使用,如果:

获取 (“https://www.googleapis.com/books/v1/volumes?q=wiedzmin”)
。然后 (resp => resp.json ())
。然后 (x => {
控制台日志 (作者:)
对于 (设 i = 0; i <= x。项目。长度-1; i) {
如果 (x.项目 [i].volumeInfo.authors) {
控制台.日志 (x.项目 [i].volumeInfo.authors.join (','))
} 其他 {
控制台日志 (找不到值)
}
}
})

相关问题

如何从异步调用返回响应? 循环中的 JavaScript 闭包--简单的实际示例 如何从异步调用返回响应? 根据值从对象数组中选择属性: Javascript 使用数组中的键获取最小值 将对象数组转换为对象 简单的承诺, 然后实施 使用 ajax 调用的 javascript 中的承诺链 如果没有特定的密钥,如何服务错误,但应该是 如何在 angular 7 中从数据库中获取数据?