1 回答

TA貢獻(xiàn)35條經(jīng)驗(yàn) 獲得超11個(gè)贊
????JavaScirpt中代碼的執(zhí)行順序是從上到下順序執(zhí)行。像你發(fā)的這段代碼,從上到下,先執(zhí)行完addCount(),然后再開始執(zhí)行setTimeout("noneAds()",?5000);
????同步代碼的程序順序執(zhí)行的方式是學(xué)習(xí)編程的第一課,異步調(diào)用并不會(huì)阻止代碼的順序執(zhí)行,而是在將來的某一個(gè)時(shí)刻觸發(fā)設(shè)置好的邏輯,所以我們并不知道邏輯什么時(shí)候會(huì)被調(diào)用?只能定義當(dāng)觸發(fā)的時(shí)候邏輯是什么?只能等待,同時(shí)可以去處理其他的邏輯?setTimeout就是這樣的一個(gè)異步調(diào)用。

TA貢獻(xiàn)119條經(jīng)驗(yàn) 獲得超250個(gè)贊
要搞清楚setTimeout()方法的使用:用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計(jì)算表達(dá)式并且只執(zhí)行 code 一次。
這個(gè)展開與收起效果只執(zhí)行了一次。也就是說當(dāng)頁面加載完成以后,先執(zhí)行addCount()函數(shù),當(dāng)?shù)竭_(dá)展開一定高度后,就開始執(zhí)行setTimeout()方法,5000ms后開始執(zhí)行noneAds()函數(shù)。
P.S 就我目前所知,JavaScript函數(shù)的同步與異步是Ajax中術(shù)語,相信你學(xué)到那就會(huì)漸漸明白了。
希望對(duì)你有幫助^_^

TA貢獻(xiàn)37條經(jīng)驗(yàn) 獲得超15個(gè)贊
javascript代碼是同步的,單線程的,就是由上往下執(zhí)行,按照我的理解來說,只有ajax是異步的執(zhí)行了,線程遇到ajax的代碼段時(shí),主線程不會(huì)去執(zhí)行ajax里的代碼,而是跳過這段代碼。那ajax里的代碼誰去執(zhí)行呢?這個(gè)任務(wù)交給了瀏覽器的線程(不是javascript的線程,javascript的線程已經(jīng)跳過了再往下執(zhí)行別的代碼,同一時(shí)間點(diǎn)執(zhí)行了多個(gè)任務(wù),這個(gè)也許就是異步吧),然后等主線程上任務(wù)都執(zhí)行完了之后,ajax再將執(zhí)行的結(jié)果返回進(jìn)行處理,就是執(zhí)行success function(){...}里面的方法。而setTimeout()其實(shí)并不是真正意義上的異步,不會(huì)同一時(shí)間點(diǎn)執(zhí)行多個(gè)任務(wù),它的作用的,將setTimeout()包裹的代碼段移動(dòng)到執(zhí)行任務(wù)的最后,而里面的那個(gè)時(shí)間參數(shù)表示的是執(zhí)行這段代碼的最短時(shí)間,就算參數(shù)為0,也會(huì)放到最后執(zhí)行。

TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超0個(gè)贊
添加回答
舉報(bào)