循环中嵌套异步操作的流程控制
2018-08-05 07:49:40来源:博客园 阅读 ()
笔者最近在写node.js项目中遇到了一个比较有趣的流程控制需求
需求是:先将多个object对象循环遍历后进行异步操作写入到数据库中去,等这部操作结束后在进行下一次的查询操作。
这个流程需要注意的是在你foreach 或者 for循环的时候里面的异步操作是不会同步进行的,往往会导致时间相差而产生bug.
我在看了卷老师的博客后发现可以判断你循环对象的length,而每次执行结束后进行加一操作,如果长度足够,进行ruturn写法如下
let x = 0; for (let x of arry){ xxx.create(x).then(_=>{ x= x+1; if(x===arry.length){ return xxxxx; } }) }
这种方式固然可行,但是仍然会有部分的性能不足,在社区大佬Miu的指点下我是用了js的特性,定义一个promise对象将这个异步操作全部push进去如下
for(let item of datas){ proList.push(xxx.create(let)); } return Promise.all(proList).then(function (data) { }
由于js的是由obecjt对象构成的,所以这里面可以将你定义的prolist中push大量的异步操作然后统一使用promis all来执行。然后使用then来控制流程就好了。
有趣的是js是个弱类型,但是大部分的变量所定义的指向位置都是内存,吾辈也算是在js的探索中跟进一步了
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:从函数作用域和块级作用域看javascript的作用域链
下一篇:ES6——介绍
- jQuery异步提交表单的两种方式 2020-03-12
- Javascript Ajax异步读取RSS文档具体实现 2020-02-25
- 高性能JavaScript循环语句和条件语句 2020-02-21
- JavaScript 异步调用 2020-02-07
- jQuery实现异步获取json数据的2种方式 2019-12-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash