前沿:參考ES6語法的async/await的處理機制
先上一段代碼
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物件)
轉:https://www.cnblogs.com/xiujun/p/10637037.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/174067.html
標籤:JavaScript
下一篇:Vue.js應用基礎
