6.Javascript如何处理循环的异步操作
程序员文章站
2022-05-22 20:17:34
前沿:参考ES6语法的async/await的处理机制 先上一段代码 1 function getMoney(){ 2 var money=[100,200,300] 3 for( let i=0; i{ ......
先上一段代码
1 function getmoney(){ 2 var money=[100,200,300] 3 for( let i=0; i<money.length; i++){ 4 compute.exec().then(()=>{ 5 console.log(money[i]) 6 //alert(i) 7 }) 8 } 9 } 10 //compute.exec()这是个异步方法,在里面处理一些实际业务 11 //这时候打印出来的很可能就是300,300,300(因为异步for循环还没有等异步操作返回promise对象过来i值已经改变)
正确处理思路
1 async function getmoney(){ 2 var money=[100,200,300] 3 for( let i=0; i<money.length; i++){ 4 await compute.exec().then(()=>{ 5 console.log(money[i]) 6 //alert(i) 7 }) 8 } 9 } 10 //关键字async/await async告诉getmoney方法里面存在异步的操作,await放在具体异步操作(方法)前面,意思是等待该异步返回promise才会继续后面的操作
另外还有一种递归的处理思路
1 function getmoney(i) { 2 var money=[100,200,300] 3 compute.exec().then(() => { 4 if ( i < money.length ) { 5 console.log(money[i]); 6 i++; 7 getmoney(i); 8 } 9 }); 10 } 11 getmoney(0);//开始调用 12 //用递归来实现自我循环(具体循环在then里面,可以确保前面的compute.exec()的异步操作完成).then()是返回了promise对象为resolve后才进行的(可以了解一下promise对象)
转:
上一篇: 孙策26岁就去世了,大乔最后结局如何?
下一篇: 我以为过水面呢哈哈哈