同步混移,異步

js異步操作的方法:
1.回調(diào)函數(shù)
就是把一方法當(dāng)作參數(shù)傳到另一個(gè)方法里。有兩種回調(diào)方式:同步回調(diào)和有異步回調(diào)

  • 同步回調(diào)
function f2(data){
  console.log(data)
}
function f1(callfun){
  var a =""
  callfun(a)
  console.log("執(zhí)行完畢")
}
f1(f2)

執(zhí)行順序:執(zhí)行f1->f2->f1的console
依然是順序執(zhí)行,等待f2執(zhí)行完畢再繼續(xù)档插。同步回調(diào)的實(shí)質(zhì)就是代碼分離

  • 異步回調(diào)
function f2(data){
  console.log(data)
}
function f1(callfun){
  var a =""
  setTimeout(callfun(a),500)
  console.log("執(zhí)行完畢")
}
f1(f2)

執(zhí)行順序:執(zhí)行f1->設(shè)定f2執(zhí)行的定時(shí)器->f1的console->f2
通過(guò)定時(shí)器實(shí)現(xiàn)了函數(shù)的異步回調(diào)
優(yōu)點(diǎn):看起來(lái)簡(jiǎn)單易懂
缺點(diǎn):不利于代碼的閱讀和維護(hù),各個(gè)部分之間高度耦合亚再。流程會(huì)很混亂郭膛,而且每個(gè)任務(wù)只能指定一個(gè)回調(diào)函數(shù)。容易陷入回調(diào)地獄氛悬。(多次回調(diào)信任問(wèn)題)

為了使多個(gè)函數(shù)可以順序執(zhí)行则剃,使用多層次的異步回調(diào)過(guò)程中,

doA(function(){
  doB();
  doC(function(){
    doD()
  })
  doE()
})
doF()  //注:BCDE都是異步操作

以上代碼的執(zhí)行序:A->F->B->C->E->F->D

補(bǔ)充:setTimeout作用如捅,他是一個(gè)定時(shí)器棍现,當(dāng)定時(shí)器時(shí)間到了之后,環(huán)境會(huì)把回調(diào)函數(shù)掛到事件循環(huán)中镜遣,然后就等待前面的函數(shù)執(zhí)行完畢己肮,再執(zhí)行他。所以定時(shí)期只能保證事件肯定在設(shè)定時(shí)間之后執(zhí)行悲关,不能保證具體執(zhí)行時(shí)間谎僻。

2.事件監(jiān)聽(tīng)
比如click事件,觸發(fā)操作寓辱。

3.發(fā)布訂閱模式
我們假定艘绍,存在一個(gè)"信號(hào)中心",某個(gè)任務(wù)執(zhí)行完成秫筏,就向信號(hào)中心"發(fā)布"(publish)一個(gè)信號(hào)诱鞠,其他任務(wù)可以向信號(hào)中心"訂閱"(subscribe)這個(gè)信號(hào)挎挖,從而知道什么時(shí)候自己可以開始執(zhí)行。這就叫做"發(fā)布/訂閱模式"(publish-subscribe pattern)航夺,又稱"觀察者模式"(observer pattern)肋乍。我們可以通過(guò)查看"消息中心",了解存在多少信號(hào)敷存、每個(gè)信號(hào)有多少訂閱者墓造,從而監(jiān)控程序的運(yùn)行。

jQuery.subscribe("done", f2); //首先锚烦,f2向"信號(hào)中心"jQuery訂閱"done"信號(hào)觅闽。
function f1(){
  setTimeout(function () {
    // f1的任務(wù)代碼
    jQuery.publish("done"); //f1執(zhí)行完成后,向"信號(hào)中心"jQuery發(fā)布"done"信號(hào)涮俄,引發(fā)f2的執(zhí)行蛉拙。
  }, 1000);
} 
jQuery.unsubscribe("done", f2); //f2完成執(zhí)行后,也可以取消訂閱(unsubscribe)彻亲。

4.promise http://www.reibang.com/p/0edaf787fd0b
5.異步迭代生成器 http://www.reibang.com/p/c99fab058b77
6.asyc孕锄,await

以上幾種方法的比較:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市苞尝,隨后出現(xiàn)的幾起案子畸肆,更是在濱河造成了極大的恐慌,老刑警劉巖宙址,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轴脐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抡砂,警方通過(guò)查閱死者的電腦和手機(jī)大咱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)注益,“玉大人碴巾,你說(shuō)我怎么就攤上這事〕笊Γ” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵低匙,是天一觀的道長(zhǎng)旷痕。 經(jīng)常有香客問(wèn)我顽冶,道長(zhǎng),這世上最難降的妖魔是什么强重? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任贸人,我火速辦了婚禮,結(jié)果婚禮上佃声,老公的妹妹穿的比我還像新娘。我一直安慰自己圾亏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布志鹃。 她就那樣靜靜地躺著夭问,像睡著了一般。 火紅的嫁衣襯著肌膚如雪曹铃。 梳的紋絲不亂的頭發(fā)上缰趋,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音陕见,去河邊找鬼秘血。 笑死,一個(gè)胖子當(dāng)著我的面吹牛评甜,可吹牛的內(nèi)容都是我干的灰粮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蜕着,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谋竖!你這毒婦竟也來(lái)了红柱?” 一聲冷哼從身側(cè)響起承匣,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锤悄,沒(méi)想到半個(gè)月后韧骗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡零聚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年袍暴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隶症。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡政模,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蚂会,到底是詐尸還是另有隱情淋样,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布胁住,位于F島的核電站趁猴,受9級(jí)特大地震影響刊咳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜儡司,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一娱挨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捕犬,春花似錦跷坝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至誉裆,卻和暖如春顿颅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背足丢。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工粱腻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人斩跌。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓绍些,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親耀鸦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柬批,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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