Js foreach与async/await的关系

  写一个nodejs的脚本,F5一跑就出错,重点是也不提示出错原因和地址,也可能是我不会看,总之我的脚本是被require,然后是在内部模块vm.js里:

 function createScript(code, options) {
  return new Script(code, options);
 }

  这段去new Script的时候把我的整个脚本加载进去,然后提示:

  发生异常: SyntaxError
  SyntaxError: Unexpected identifier
  at createScript (vm.js:74:10)
  at Object.runInThisContext (vm.js:116:10)
  at Module._compile (module.js:537:28)
  at Object.Module._extensions..js (module.js:584:10)
  at Module.load (module.js:507:32)
  at tryModuleLoad (module.js:470:12)
  at Function.Module._load (module.js:462:3)
  at Module.require (module.js:517:17)
  at require (internal/module.js:11:18)

  由于没有提示原因,就只能逐段注释,最后定位到使用await的一句,但是函数已经是async了,看了半天只能把怀疑对象放到在它上一句的foreach上,上网一查果然有蹊跷:
  async/await 语法糖本身就是为了避免回调函数这种“不直观”的逻辑,将异步回调转成同步顺序执行,从而使得代码符合直观的理解。而用 forEach/map/reduce 代替for循环,则正是利用回调函数的语法,牺牲代码的直观性,提升代码的简洁性。
  另一个角度await后面要接的是异步操作,而foreach是同步操作并发操作,也就是说无论await是在foreach里面还是await后面接foreach都不行

参考连接:
1:https://www.zhihu.com/question/53466898/answer/259826558
2:http://www.ruanyifeng.com/blog/2015/05/async.html –【六、注意点】

发布了22 篇原创文章 · 获赞 36 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/lc315yuhuofei/article/details/78601834