js實(shí)現(xiàn)異步的幾種方式 怎么讓js函數(shù),一個(gè)執(zhí)行完之后在執(zhí)行另外一個(gè)?
怎么讓js函數(shù),一個(gè)執(zhí)行完之后在執(zhí)行另外一個(gè)?有兩個(gè)函數(shù),函數(shù)F1(){},如果F1中沒(méi)有異步操作,比如沒(méi)有setTimeout,可以直接執(zhí)行F1(){};如果F1中有setTimeout這樣的異步操
怎么讓js函數(shù),一個(gè)執(zhí)行完之后在執(zhí)行另外一個(gè)?
有兩個(gè)函數(shù),函數(shù)F1(){},如果F1中沒(méi)有異步操作,比如沒(méi)有setTimeout,可以直接執(zhí)行F1(){};如果F1中有setTimeout這樣的異步操作,可以順序執(zhí)行。2如果F1中有像setTimeout這樣的異步操作(setTimeout不是異步操作,但還是有延時(shí)的),用1中的方法,在執(zhí)行F2中的代碼時(shí),會(huì)在F1完成之前執(zhí)行,需要判斷。根據(jù)實(shí)際情況,我遇到的是我們必須在ulli中完成click事件才能再次執(zhí)行F2,即在F1]Hello中調(diào)用F2],JS是同步執(zhí)行的,一個(gè)簡(jiǎn)單的例子解釋控制臺(tái).log(i)
對(duì)于(變量i=10i控制臺(tái).log(i)
以上兩個(gè)for循環(huán),第一個(gè)打印1-10,第二次打印10-20,結(jié)果是1-20依次輸出
JS代碼是同步執(zhí)行的,只有在Ajax的情況下,才會(huì)引起代碼執(zhí)行順序的改變,因?yàn)锳jax的請(qǐng)求時(shí)間
希望對(duì)您有所幫助
JS控制函數(shù)在一定時(shí)間SetTimeout和setinterval后執(zhí)行,但兩者都是異步的。在for循環(huán)中編寫這兩個(gè)函數(shù)。執(zhí)行順序是在執(zhí)行整個(gè)for循環(huán)之后執(zhí)行setTimeout和setinterval函數(shù)。它不能達(dá)到每次停頓幾秒鐘的效果。例如,對(duì)于(VaR I=0I<7i){控制臺(tái).log(“for:”i)設(shè)置超時(shí)(function(){控制臺(tái).log(“set:”I)})這個(gè)的執(zhí)行結(jié)果是打印出:0到6,然后打印6次設(shè)置:7