第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

看了幾十篇花里胡哨的文章,還是沒弄清javascript里面的回調(diào)和異步到底有沒有關(guān)系。

看了幾十篇花里胡哨的文章,還是沒弄清javascript里面的回調(diào)和異步到底有沒有關(guān)系。

蕪湖不蕪 2019-05-09 08:25:06
是在是不想拿別人文章里面的那種,寫了n個參數(shù),n堆執(zhí)行語句的例子來提問。我自己寫了三個簡單的例子,例子里面包含了我對回調(diào)函數(shù)的理解和疑問。我看阮老師的文章也是,開門就說callback是異步編程的一種解決方案。可是我依然沒弄明白之間有什么關(guān)系。//例1varcallback=function(num3){console.log('執(zhí)行回調(diào)函數(shù):'+num3)}functionfn(num1,num2,cb){varTotal=num1+num2;cb(Total);console.log('求和Total:'+Total)}fn(2,2,callback)執(zhí)行結(jié)果://執(zhí)行回調(diào)函數(shù):4//求和Total:4//例2functionf2(){console.log('f2finished')}functionf1(cb){setTimeout(cb,0)//用setTimeout()模擬耗時操作console.log('f1finished')}f1(f2);執(zhí)行結(jié)果://省略//例3functionf2(){setTimeout(()=>{console.log('f2finished')},0)}functionf1(cb){cb();console.log('f1finished')}f1(f2);執(zhí)行結(jié)果://省略
查看完整描述

2 回答

?
慕絲7291255

TA貢獻1859條經(jīng)驗 獲得超6個贊

我也來嘗試回答一下。
看了樓上那么多答案以及你的追問,我感覺你迷惑的地方在于你不了解“異步函數(shù)”和普通的“同步函數(shù)”之間到底有什么區(qū)別。
其實它們之間的主要區(qū)別在于“事件循環(huán)隊列”,如果你是第一次聽說這個詞,可能會被嚇到那么一下下,如果你并不是第一次聽說,那么你可能是沒有真正理解它以及它和異步函數(shù)之間的關(guān)系。
其實很簡單,事件循環(huán)隊列只是一個“待辦事項清單”,注意是“待辦”,而不是“立即辦”。加入待辦清單的是異步,沒有加入待辦清單的是同步。本質(zhì)區(qū)別正在于此。
事件循環(huán)隊列不直接向JS代碼開放,所以我們不能直接操作它,只能通過間接的方法,主要有以下幾種:
內(nèi)置的定時器函數(shù)(setTimeout/clearTimeout、setInterval/clearInterval)
異步模式的Ajax請求
新創(chuàng)建的Promise對象
async函數(shù)(本質(zhì)還是Promise)
以上4種都是異步的,除此之外的代碼都是同步的(除非js以后加入了新的異步方式)。
比如說定時器,它會將一個函數(shù)放到事件隊列中去,等到未來的某個時刻執(zhí)行。即使傳入的時間為0也是一樣,所以下面的代碼會先打印2再打印1:
setTimeout(()=>console.log(1),0);
console.log(2);
所以總結(jié)一下:
異步函數(shù)和同步函數(shù)之間的區(qū)別關(guān)鍵在于事件循環(huán)隊列
并不是回調(diào)函數(shù)的使用使得一個函數(shù)成為異步函數(shù),同步函數(shù)同樣可以使用回調(diào)
js只有固定的幾種方法可以創(chuàng)建異步函數(shù),除此之外都是同步的
                            
查看完整回答
反對 回復 2019-05-09
  • 2 回答
  • 0 關(guān)注
  • 336 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號