我在https://www.googleapis.com/books/v1/volumes?q=wiedzmin
上使用访存。如果转到此链接,则可以看到它在第9个对象中(从第545行到第602行)没有任何volumeInfo.authors
。
它给了我一个错误:
Uncaught (in promise) TypeError: Cannot read property 'join' of undefined
我想使逻辑类似“如果有错误,返回“找不到值””,并且代码执行会更进一步。
我的一段代码:
fetch("https://www.googleapis.com/books/v1/volumes?q=wiedzmin")
.then(resp => resp.json())
.then(x => {
console.log('AUTHORS: ')
for(let i=0; i <= x.items.length - 1; i++){
console.log(x.items[i].volumeInfo.authors.join(', '))
}
})
答案 0 :(得分:4)
您可以尝试检查x.items[i].volumeInfo.authors
是否为undefined
,然后使用默认的空数组让该错误不会发生:
fetch("https://www.googleapis.com/books/v1/volumes?q=wiedzmin")
.then(resp => resp.json())
.then(x => {
console.log('AUTHORS: ')
for(let i=0; i <= x.items.length - 1; i++){
console.log((x.items[i].volumeInfo.authors || []).join(', '))
}
})
或者如果您想忽略x.items[i].volumeInfo.authors
是undefined
,则在以下情况下仍可以使用:
fetch("https://www.googleapis.com/books/v1/volumes?q=wiedzmin")
.then(resp => resp.json())
.then(x => {
console.log('AUTHORS: ')
for(let i=0; i <= x.items.length - 1; i++){
if(x.items[i].volumeInfo.authors) {
console.log(x.items[i].volumeInfo.authors.join(', '))
} else {
console.log('No value found')
}
}
})