ESLint - no-await-in-loop 疑惑

{app.params.name}} {app.params.name}} {app.params.name}}

在使用eslint的时候,遇到async/await语法 会报错,总是提示 no-await-in-loop。举个例子看下面的代码的逻辑

for (let i = 0; i < userRedpacketItem.length; i += 1) {
  userRedpacketItem[i].product_id = await productModel.redpacketMapPrdIdToRefId(ctx, userRedpacketItem[i].product_id);
  // 是否过期
  userRedpacketItem[i] = userHasRedpacketModel.markExpire(userRedpacketItem[i]);
}

注意点是在for循环中使用了await

有点懵了,不能await,那我怎么取值进行更新值呢,根本就没有办法处理了,难我要先进行取值然后在进行循环赋值?嗯,这样肯定不行的,看来自己还是有点菜,不知其中的规范用法,好了,进行不断学习找到了解决办法,看下面的代码

await Promise.all(userRedpacketItem.map(async (item) => {
  let newItem = item;
  newItem.product_id = await productModel.redpacketMapPrdIdToRefId(ctx, item.product_id);
  // 是否过期
  newItem = userHasRedpacketModel.markExpire(item);
  return newItem;
}));

嗯这样就不报错了,而且这个方法觉得也很node。


版权声明

durban 创作并维护的 Gowhich 博客采用 创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 Gowhich 博客( https://www.gowhich.com ),版权所有,侵权必究。

本文永久链接: https://www.gowhich.com/blog/798

comments powered by Disqus