ESLint - no-await-in-loop 疑惑
在使用eslint的时候,遇到async/await语法 会报错,总是提示 no-await-in-loop。举个例子看下面的代码的逻辑
1 2 3 4 5 | <span class= "hljs-keyword" > for < /span > (<span class= "hljs-keyword" > let < /span > i = <span class= "hljs-number" >0< /span >; i < userRedpacketItem.length; i += <span class= "hljs-number" >1< /span >) { userRedpacketItem[i].product_id = <span class= "hljs-keyword" >await< /span > productModel.redpacketMapPrdIdToRefId(ctx, userRedpacketItem[i].product_id); <span class= "hljs-comment" > // 是否过期< /span > userRedpacketItem[i] = userHasRedpacketModel.markExpire(userRedpacketItem[i]); } |
注意点是在for循环中使用了await
有点懵了,不能await,那我怎么取值进行更新值呢,根本就没有办法处理了,难我要先进行取值然后在进行循环赋值?嗯,这样肯定不行的,看来自己还是有点菜,不知其中的规范用法,好了,进行不断学习找到了解决办法,看下面的代码
1 2 3 4 5 6 7 | <span class = "hljs-keyword" >await</span> <span class = "hljs-built_in" >Promise</span>.all(userRedpacketItem.map(<span class = "hljs-keyword" >async</span> (item) => { <span class = "hljs-keyword" >let</span> newItem = item; newItem.product_id = <span class = "hljs-keyword" >await</span> productModel.redpacketMapPrdIdToRefId(ctx, item.product_id); <span class = "hljs-comment" > // 是否过期</span> newItem = userHasRedpacketModel.markExpire(item); <span class = "hljs-keyword" > return </span> newItem; })); |
嗯这样就不报错了,而且这个方法觉得也很node。
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于
博客(
https://www.gowhich.com ),版权所有,侵权必究。
本文永久链接: https://www.gowhich.com/blog/798
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 Gowhich博客( https://www.gowhich.com ),版权所有,侵权必究。
本文永久链接: https://www.gowhich.com/blog/798