async和await关键字让我们可以用一种更简洁的方式写出基于 Promise 的异步行为,而无需刻意地链式调用 promise。而FetchAPI可以通过网络访问资源,您可以发出HTTP请求(使用GET和POST其他方法)、下载和上传文件。
Fetch API是一个全局的fetch()方法用于发起获取资源的请求。它返回一个promise,这个promise会在请求响应后被resolve,并传回Response对象。fetch()使用起来很简单,它的语法:
Promise<Response> fetch(input[, init]);
input: URL字符串,或者一个Request对象 options: 具有method, headers, body,credentials等属性的配置对象。
async/await非常适合与fetch()因为它使用语法糖简化了promises 的工作。
如下代码插入网页中会返回一直可爱的狗狗。
<img id="dog" />
<script>
async function getDog(){
const response = await fetch('https://dog.ceo/api/breeds/image/random')
const dog = await response.json()
document.getElementById('dog').src = dog.message
}
getDog()
</script>
Response对象提供了很多有用的方法:
response.ok; // => false
response.status; // => 404
可以通过response的这二个属性来判断请求是否成功,response.ok最为方便。
async function getDog(){
const response = await fetch('https://dog.ceo/api/breeds/image/random')
if(!response.ok){
throw new Error('请求失败!');
}
const dog = await response.json()
document.getElementById('dog').src = dog.message
}
getDog().catch(error => {
error.message; // => '请求失败!'
});
参考: