不处理丢失的详细信息,响应False

时间:2020-05-31 13:54:42

标签: reactjs ajax axios

如何检查标题不存在时是否发出警报?

Axios可以实现吗?

enter image description here

export const getMoviesImdb = async (title) => {
  title = encodeURIComponent(title);
  return fetch(`http://www.omdbapi.com/?s=${title}`)
  .then((response) => response.json()
      .then((data) => {
        if (data.Response != "False") {
          return data.Search
        }
        return Promise.reject(data.Message);
      }, [])
      .catch((error) => {
        return Promise.reject(error); 
      })
  );
};

1 个答案:

答案 0 :(得分:-1)

使用axios,您可以使用response.data访问结果。另外,它已经返回了一个Promise,因此您不必显式地返回Promise。取而代之的是检查api响应并抛出错误,然后简单地将其捕获到用法中(在此调用getMoviesImdb函数)。最后,getMoviesImdb乐趣不必是异步乐趣。

Working demo(只需在url中添加您的api密钥进行测试)

代码段示例

export default function App() {
  useEffect(() => {
    let myMovies;
    getMoviesImdb("asdf")
      .then(res => {
        // make sure to use your api key to see results
        console.log("res", res);
        myMovies = res;
      })
      .catch(err => {
        // make sure to use your api key to see error message
        console.log("err", err);
      });
  }, []);

  const getMoviesImdb = title => {
    console.log("title", title);
    // title = encodeURIComponent(title);
    // use your api key below
    return axios(`http://www.omdbapi.com/?s=${title}`).then(response => {
      // console.log("response", response);
      if (response.data.Response !== "False") {
        return data.Search;
      }
      console.log("response.data", response.data.Error);
      throw new Error(response.data.Error);
    });
  };
  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
    </div>
  );
}

相关问题