在做微信小程序,假如在生命周期onLoad中,有两个异步函数需要执行后拿到结果,传递给一个同步的方法。
本来是想前面两个异步方法用Promise.all后,然后传递给下面这个同步的函数。
结果却是这个同步方法不等前面两个异步,就先执行了报错了(没等到值)。
就比如这样:
let a = new Promise(function(res){res(1);})
let b = new Promise(function(res){res(2);})
Promise.all([a,b]).then(res=>console.log(res))
console.log(b)
怎么才能让console.log打印出b?
后来使用的ansyc和await,把前面两个异步变成同步后解决了。
假如硬是要用promise来搞,怎么办?
另外感觉ansyc比promise更容易让新手理解
使用 await 的方法
不使用 await 的方法
两个方法就是用 await 还是用 then 的区别,参阅理解 JavaScript 的 async/await