今天写js,好好的一段async函数里的代码加了await就直接弹错Unexpected identifier。
仔细研究了下,发现竟然是for - each搞出的问题。
使用规范中,await必须在async函数的上下文中。通过个人理解的这句话就是await只能在async函数中使用。
自己的代码中,虽然最外层start函数是通过async声明的,在for - each函数体内部的箭头函数中使用了await,而该箭头函数是一个普通函数,所以await的上文是一个普通函数,最终导致报错。
所以第一反应是直接在箭头函数位置加async就好。但是想了下不对,这样for循环里面就变成异步了。最后为了解决吧for - each改成了for of结构。避免了新声明一个函数空间。
参考:
https://segmentfault.com/a/1190000011156836
https://objcer.com/2017/10/12/async-await-with-forEach/
网友评论