Javascript處理循環(huán)的異步操作指南
案例:
compute.exec()這是個(gè)異步方法,在里面處理一些實(shí)際業(yè)務(wù),這時(shí)候打印出來(lái)的很可能就是300,300,300(因?yàn)楫惒絝or循環(huán)還沒(méi)有等異步操作返回Promise對(duì)象過(guò)來(lái)i值已經(jīng)改變成300了)
function getMoney(){ var money=[100,200,300] for(let i=0; i<money.length; i++){ compute.exec().then(()=>{ console.log(money[i]) }) } }
一、async/await 處理思路
async function getMoney(){ var money=[100,200,300] for( let i=0; i<money.length; i++){ await compute.exec().then(()=>{ console.log(money[i]) }) } } // async告訴getMoney方法里面存在異步的操作 // await放在具體異步操作(方法)前面,意思是等待該異步返回Promise才會(huì)繼續(xù)后面的操作
二、遞歸處理思路
function getMoney(i) { var money=[100,200,300] compute.exec().then(() => { if ( i < money.length ) { console.log(money[i]); i++; getMoney(i); } }); } getMoney(0);//開(kāi)始調(diào)用 //用遞歸來(lái)實(shí)現(xiàn)自我循環(huán)(具體循環(huán)在then里面,可以確保前面的compute.exec()的異步操作完成).then()是返回了Promise對(duì)象為resolve后才進(jìn)行的(可以了解一下Promise對(duì)象)
總結(jié)
到此這篇關(guān)于Javascript處理循環(huán)的異步操作的文章就介紹到這了,更多相關(guān)Javascript循環(huán)異步操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入淺出JS的Object.defineProperty()
這篇文章主要介紹了深入淺出JS的Object.defineProperty(),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06JS+CSS實(shí)現(xiàn)仿觸屏手機(jī)撥號(hào)盤(pán)界面及功能模擬完整實(shí)例
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)仿觸屏手機(jī)撥號(hào)盤(pán)界面及功能模擬完整實(shí)例,可以實(shí)現(xiàn)逼真模擬手機(jī)撥號(hào)盤(pán)界面并實(shí)現(xiàn)點(diǎn)擊輸入對(duì)應(yīng)號(hào)碼的功能,需要的朋友可以參考下2015-05-05如何檢測(cè)JavaScript中的死循環(huán)示例詳解
這篇文章主要給大家介紹了關(guān)于如何檢測(cè)JavaScript中死循環(huán)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08KnockoutJS數(shù)組比較算法實(shí)例詳解
這篇文章主要介紹了KnockoutJS數(shù)組比較算法實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11