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

时间:2019-06-04 07:15:05

标签: javascript object promise fetch

我在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(', '))
          }

      })

1 个答案:

答案 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.authorsundefined,则在以下情况下仍可以使用:

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')
        }
      }
    })