如何检查标题不存在时是否发出警报?
Axios可以实现吗?
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);
})
);
};
答案 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>
);
}