使用场景:
假如一个页面有多个异步的操作,并且他们之间没有依赖关系。
使用语法:
第一种方式:
async getOrderStatus () {
const appointWithMeStatus = Order.getOrderStatus(roleType.PUBLISHER) //假如响应时间为6秒
const myAppointStatus = Order.getOrderStatus(roleType.CONSUMER) //假如响应时间为4秒
this.setData({
appointWithMeStatus: await appointWithMeStatus,
myAppointStatus: await myAppointStatus
})
},
分析:
相信大部分人之前都是这样一种调用方式
第二种方式:
async getOrderStatus () {
const appointWithMeStatus = await Order.getOrderStatus(roleType.PUBLISHER) //假如响应时间为6秒
const myAppointStatus = await Order.getOrderStatus(roleType.CONSUMER) //假如响应时间为4秒
this.setData({
appointWithMeStatus: appointWithMeStatus,
myAppointStatus: myAppointStatus
})
},
先不考虑数据绑定花费的时间:两步异步调用都是转同步调用。在第一步执行完毕后才会去执行第二步的操作。因此,这种方式响应的总时间应该为6+4=10秒
而第一种的方式:前两步都是异步调用,所以响应时间因该等于其中响应时间最长的那一步操作,即第一步的6秒
。这种方式大大提高了异步加载的效率。
其实这也是一个面试问题:在引入async/await机制后,如何解决多个异步执行效率的问题?我们就可以用第一种的方式来解答。