async函数和await
async函数是使用async关键字声明的函数。async函数是AsyncFunction构造函数的实例,并且其中允许使用await关键字。async和await关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用promise。
省市区代码示例
async function getArea() {
const pObj = await axios({ url: 'http://hmajax.xxxx.net/api/province' })
const pname = pObj.data.list[0]
const cObj = await axios({ url: 'http://hmajax.xxxx.net/api/city', params: { pname } })
const cname = cObj.data.list[0]
const aObj = await axios({ url: 'http://hmajax.xxxx.net/api/area', params: { pname, cname } })
const area = aObj.data.list[0]
document.querySelector('.province').innerHTML = pname
document.querySelector('.city').innerHTML = cname
document.querySelector('.area').innerHTML = area
}
async函数和await_捕获错误
使用 try…catch
try. . .catch语句标记要尝试的语句块。并指定一个出现异常时抛出的响应。
async function getArea() {
try {
const pObj = await axios({ url: 'http://hmajax.itheima.net/api/province1' })
const pname = pObj.data.list[0]
const cObj = await axios({ url: 'http://hmajax.itheima.net/api/city', params: { pname } })
const cname = cObj.data.list[0]
const aObj = await axios({ url: 'http://hmajax.itheima.net/api/area', params: { pname, cname } })
const area = aObj.data.list[0]
document.querySelector('.province').innerHTML = pname
document.querySelector('.city').innerHTML = cname
document.querySelector('.area').innerHTML = area
} catch (error) {
new Error(error)
}
}