什么是異步操作

1.背景介紹

同步指的是一次只能完成一件任務(wù)豪墅。如果有多個(gè)任務(wù)泉手,就必須排隊(duì),前面一個(gè)任務(wù)完成偶器,再執(zhí)行后面一個(gè)任務(wù)斩萌,以此類(lèi)推缝裤。

異步指的是每一個(gè)任務(wù)有一個(gè)或多個(gè)回調(diào)函數(shù)(callback),前一個(gè)任務(wù)結(jié)束后颊郎,不是執(zhí)行后一個(gè)任務(wù)憋飞,而是執(zhí)行回調(diào)函數(shù),后一個(gè)任務(wù)則是不等前一個(gè)任務(wù)結(jié)束就執(zhí)行袭艺,所以程序的執(zhí)行順序與任務(wù)的排列順序是不一致的搀崭、異步的。

2.知識(shí)剖析

首先js是單線程的語(yǔ)言猾编,即同一時(shí)間只能做做一件事瘤睹。那Js如何實(shí)現(xiàn)異步的,異步和單線程不是自相矛盾嗎答倡?其實(shí)轰传,單線程和異步確實(shí)不能同時(shí)成為一個(gè)語(yǔ)言的特性。js選擇了成為單線程的語(yǔ)言瘪撇,所以它本身不可能是異步的获茬,但js的宿主環(huán)境(比如瀏覽器,Node)是多線程的倔既,宿主環(huán)境通過(guò)某種方式(事件驅(qū)動(dòng)恕曲,下文會(huì)講)使得js具備了異步的屬性。

瀏覽器的內(nèi)核是多線程的渤涌,它們?cè)趦?nèi)核制控下相互配合以保持同步佩谣,一個(gè)瀏覽器至少實(shí)現(xiàn)三個(gè)常駐線程:javascript引擎線程,UI渲染線程实蓬,瀏覽器事件觸發(fā)線程茸俭。

1.javascript引擎線程是基于事件驅(qū)動(dòng)單線程執(zhí)行的,JS引擎一直等待著任務(wù)隊(duì)列中任務(wù)的到來(lái)安皱,然后加以處理调鬓,瀏覽器無(wú)論什么時(shí)候都只有一個(gè)JS線程在運(yùn)行JS程序。

2.UI渲染線程負(fù)責(zé)渲染瀏覽器界面酌伊,當(dāng)界面需要重繪(Repaint)或由于某種操作引發(fā)回流(reflow)時(shí),該線程就會(huì)執(zhí)行腾窝。但需要注意 UI渲染線程與JS引擎是互斥的,當(dāng)JS引擎執(zhí)行時(shí)UI線程會(huì)被掛起居砖,UI更新會(huì)被保存在一個(gè)隊(duì)列中等到JS引擎空閑時(shí)立即被執(zhí)行燕锥。

3.事件觸發(fā)線程,當(dāng)一個(gè)事件被觸發(fā)時(shí)該線程會(huì)把事件添加到待處理隊(duì)列的隊(duì)尾悯蝉,等待JS引擎的處理归形。這些事件可來(lái)自JavaScript引擎當(dāng)前執(zhí)行的代碼塊如setTimeOut、也可來(lái)自瀏覽器內(nèi)核的其他線程如鼠標(biāo)點(diǎn)擊鼻由、AJAX異步請(qǐng)求等暇榴,但由于JS的單線程關(guān)系所有這些事件都得排隊(duì)等待JS引擎處理厚棵。

3.常見(jiàn)問(wèn)題

1.ajax發(fā)送異步請(qǐng)求瀏覽器做了什么。

2.有哪些常見(jiàn)異步回調(diào)函數(shù)蔼紧?

4.解決方案

1.Js創(chuàng)建了一個(gè)ajax請(qǐng)求

? 2.瀏覽器另外開(kāi)啟一個(gè)ajax引擎線程婆硬,執(zhí)行ajax請(qǐng)求

? 3.執(zhí)行得到響應(yīng)后將回調(diào)函數(shù)放入任務(wù)隊(duì)列中。

4.Js執(zhí)行任務(wù)隊(duì)列中的回調(diào)函數(shù)奸例。

2.常見(jiàn)的異步

1彬犯,點(diǎn)擊時(shí)間,

2查吊,定時(shí)器谐区,

3,AJAX請(qǐng)求逻卖。

5.遇到到問(wèn)題宋列。

如何寫(xiě)一個(gè)簡(jiǎn)單的異步操作。

答:回調(diào)函數(shù)也相當(dāng)于異步操作评也,所以可以在函數(shù)A里面回調(diào)函數(shù)B炼杖。

如果倆個(gè)定時(shí)器操作耗時(shí)一樣長(zhǎng)或者一個(gè)比一個(gè)操作耗時(shí)稍微短,代碼如何執(zhí)行盗迟。

答:異步操作總是將耗時(shí)的任務(wù)放在后面執(zhí)行所以耗時(shí)短的將會(huì)在前面執(zhí)行坤邪,如果耗時(shí)一樣長(zhǎng)則看函數(shù)的排序,或者是否回調(diào)罚缕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末艇纺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子怕磨,更是在濱河造成了極大的恐慌喂饥,老刑警劉巖消约,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肠鲫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡或粮,警方通過(guò)查閱死者的電腦和手機(jī)导饲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)氯材,“玉大人渣锦,你說(shuō)我怎么就攤上這事∏庀” “怎么了袋毙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)冗尤。 經(jīng)常有香客問(wèn)我听盖,道長(zhǎng)胀溺,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任皆看,我火速辦了婚禮仓坞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腰吟。我一直安慰自己无埃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布毛雇。 她就那樣靜靜地躺著嫉称,像睡著了一般。 火紅的嫁衣襯著肌膚如雪禾乘。 梳的紋絲不亂的頭發(fā)上澎埠,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音始藕,去河邊找鬼蒲稳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伍派,可吹牛的內(nèi)容都是我干的江耀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼诉植,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼祥国!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起晾腔,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舌稀,失蹤者是張志新(化名)和其女友劉穎烘豌,沒(méi)想到半個(gè)月后寺董,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡璧尸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年剔应,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睡腿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡峻贮,死狀恐怖席怪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纤控,我是刑警寧澤挂捻,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站船万,受9級(jí)特大地震影響刻撒,放射性物質(zhì)發(fā)生泄漏惜辑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一疫赎、第九天 我趴在偏房一處隱蔽的房頂上張望盛撑。 院中可真熱鬧,春花似錦捧搞、人聲如沸抵卫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)介粘。三九已至,卻和暖如春晚树,著一層夾襖步出監(jiān)牢的瞬間姻采,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工爵憎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留慨亲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓宝鼓,卻偏偏與公主長(zhǎng)得像刑棵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子愚铡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容