You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constsleep=delay=>{returnnewPromise(resolve=>{setTimeout(resolve,delay)})}constfn=async_=>{console.log('starting....')awaitsleep(1000)console.log('after sleeping for 1 second')}
async/await 小技巧
sleep 函数
以前只接使用
setTimeout
和回调函数实现一个sleep
会有很多的副作用,用起来很不方便。所以让
setTimeout
搭配使用async/await
搭配 map() 函数
在
map
中引入异步处理:代码执行后的结果
[Promise, Promise, Promise, Promise, Promise]
而且map
函数并不会等异步函数asyncFn
执行完毕后再返回结果既然
async
执行后会返回一个Promise
对象,所以可以通过Promise.all
的状态来判断异步函数的状态:这样就能正常返回结果
[2, 3, 4, 5, 6]
使用 await 代替 then() 函数
上面的例子最后使用了
Promise.all
还是回到了使用回调函数的方式这个也很好解决,只需要在外层再加一个
async
函数搭配 reduce() 函数
通过引入
async/await
可以把reduce
扩展成一个按顺序执行异步函数的工具reduce
用起来很简单:像
map
函数一样引入async/await
:而且还可以在
reduce
内部加入异步函数:上述代码会每隔一秒依次打出 1 3 6 10 15
参考自
The text was updated successfully, but these errors were encountered: