回調(diào)函數(shù)

瀏覽器的事件輪詢

首先js是單線程的,js異步是瀏覽器事件輪詢的結(jié)果。
事件輪詢的字面意思就是事件循環(huán)媚送。
事件輪詢的步驟:

  1. 所有同步的任務(wù)都在主線程上運(yùn)行,形成一個(gè)執(zhí)行棧寇甸。
  2. 遇到事件塘偎、ajax、settimeout時(shí)會(huì)把它們放入一個(gè)叫做‘任務(wù)隊(duì)列’里拿霉。遵循先進(jìn)先出的原則吟秩。
  3. 等主線程上的任務(wù)完成后,就會(huì)把任務(wù)隊(duì)列里面的任務(wù)放到主線程上來進(jìn)行執(zhí)行绽淘。
  4. 主線程不斷地執(zhí)行上面第三步涵防。

同步和異步

同步和異步的定義

同步情況下,后面的代碼必須要等到前面的代碼執(zhí)行結(jié)束并返回結(jié)果才執(zhí)行收恢。也就是a-b-c武学。
異步情況下祭往,不等任務(wù)執(zhí)行完,直接執(zhí)行下一個(gè)任務(wù)火窒,而異步函數(shù)會(huì)在新線程中去執(zhí)行硼补,執(zhí)行結(jié)束后會(huì)放在一個(gè)回調(diào)函數(shù)中進(jìn)行處理⊙螅回調(diào)函數(shù)的作用是獲取函數(shù)的執(zhí)行結(jié)果已骇,并進(jìn)行之后的處理。
回調(diào)函數(shù)與異步
回調(diào)函數(shù)和同步異步?jīng)]有任何關(guān)系票编,只是一般會(huì)通過回調(diào)對(duì)異步函數(shù)傳參褪储,用回調(diào)函數(shù)來處理異步函數(shù)的返回結(jié)果而已。
回調(diào)的形成:在一個(gè)函數(shù)中將另一個(gè)函數(shù)作為參數(shù)傳入進(jìn)去并在此函數(shù)中對(duì)其進(jìn)行調(diào)用慧域。
異步函數(shù)與異步:異步函數(shù)setTimeout和setInterval是最基礎(chǔ)的異步函數(shù)鲤竹。

js中的異步單線程的特性

js并不像其他語言一樣具有多線程特性,js是一門嚴(yán)格單線程運(yùn)行的語言昔榴,這就意味著不存在同一時(shí)間有多段代碼被執(zhí)行的現(xiàn)象辛藻。在某個(gè)特定的時(shí)刻,永遠(yuǎn)只有特定代碼被執(zhí)行互订,并阻塞其他代碼吱肌。
同時(shí),js又是支持異步特性的語言仰禽,異步意味著異步函數(shù)又執(zhí)行后不會(huì)立即得到結(jié)果氮墨,而是等待被調(diào)用者來處理回調(diào)函數(shù),比如用setTimeout異步函數(shù)實(shí)現(xiàn)了在一段時(shí)間后執(zhí)行回調(diào)函數(shù)的異步動(dòng)作吐葵。
異步的單線程之間并不沖突规揪,不沖突的原因是異步本身不是js實(shí)現(xiàn)的,而是由瀏覽器的事件觸發(fā)線程景一個(gè)個(gè)異步任務(wù)插入到事件隊(duì)列中再由js單線程來執(zhí)行温峭。

回調(diào)

概念的理解:當(dāng)用戶調(diào)用系統(tǒng)的api的時(shí)候稱之為調(diào)用粒褒,當(dāng)系統(tǒng)調(diào)用用戶自定義的函數(shù)時(shí)稱之為回調(diào)。代碼的表現(xiàn)形式就是把一個(gè)函數(shù)a作為參數(shù)傳入另一個(gè)函數(shù)b中诚镰,在函數(shù)b中進(jìn)行返回調(diào)用。

function fn1(m,n){
    return m(n);
}
function m(num){
    return num+10;
}
fn1(m,10)//此處傳的是m祥款,而不是m()

如果傳的是m()則:

function box(num,sum){
    return num+sum;
}
function sum(num){
    return num+10;
}
box(sum(10),num)//30

類型就是同步回調(diào)和異步回調(diào)
同步回調(diào)

function useless(callback){
    return callback();
}
var a=function callback(){
    return text;
}
useless(a)

異步回調(diào)主要用于ajax,事件清笨,setTimeout中。

使用比較器進(jìn)行排序

對(duì)數(shù)組[213,23,13,266]中的數(shù)字進(jìn)行排序

var Array=[213,23,13,266]
Array.sort(function(value1,value2){
    return value2-vaule1;
}//數(shù)組sort方法的特性就是如果value2-value1是正數(shù)的話則兩個(gè)數(shù)調(diào)換位置刃跛。此處也可以認(rèn)為是回調(diào)抠艾。

對(duì)數(shù)組中的按name進(jìn)行排序

var data=[{name:'lili',age:'10'},{name:'mary',age:'12'}]
function fn2(m){
    var object1={
        name:'lili',
        age:'10'
    }
    var object2={
        name:'mary',
        age:'12'
    }
    function fn1(obj1,obj2){
    var value1=obj1[m];
    var value2=obj2[m];
    if(value1<value2){
        return 1;
    }else if(value1>value2){
        return -1;
    }else{
        return 0;
    }
}
}

data.sort(fn2('name'))//此處比較的是字符串就是比較的編碼值。比較的是name當(dāng)然要傳入name的值桨昙。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末检号,一起剝皮案震驚了整個(gè)濱河市腌歉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌齐苛,老刑警劉巖翘盖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蓬网,死亡現(xiàn)場(chǎng)離奇詭異淋淀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)群井,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門玛痊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汰瘫,“玉大人,你說我怎么就攤上這事擂煞』烀郑” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵对省,是天一觀的道長蝗拿。 經(jīng)常有香客問我,道長官辽,這世上最難降的妖魔是什么蛹磺? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮同仆,結(jié)果婚禮上萤捆,老公的妹妹穿的比我還像新娘。我一直安慰自己俗批,他們只是感情好俗或,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岁忘,像睡著了一般辛慰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上干像,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天帅腌,我揣著相機(jī)與錄音,去河邊找鬼麻汰。 笑死速客,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的五鲫。 我是一名探鬼主播溺职,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了浪耘?” 一聲冷哼從身側(cè)響起乱灵,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎七冲,沒想到半個(gè)月后痛倚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡癞埠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年状原,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苗踪。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡颠区,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出通铲,到底是詐尸還是另有隱情毕莱,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布颅夺,位于F島的核電站朋截,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吧黄。R本人自食惡果不足惜部服,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拗慨。 院中可真熱鬧廓八,春花似錦、人聲如沸赵抢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烦却。三九已至宠叼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間其爵,已是汗流浹背冒冬。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摩渺,地道東北人窄驹。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像证逻,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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

  • 最近本人對(duì)于js的運(yùn)行機(jī)制,特別是異步龙宏,還有回調(diào)函數(shù)感覺很亂棵逊,于是參考了很多有用的博客(博客原文地址會(huì)在文末給出)...
    一包閱讀 1,069評(píng)論 0 2
  • 大家好,我是IT修真院成都分院第09期學(xué)員银酗。今天分享的內(nèi)容是js中回調(diào)函數(shù)辆影? 1.背景介紹 在我們接觸ajax,與...
    我要夏天_11ec閱讀 419評(píng)論 0 2
  • js同步異步以及回調(diào)函數(shù) 1.背景介紹 什么是同步,什么是異步? 同步指的是一次只能完成一件任務(wù)灭衷。如果有多個(gè)任務(wù)次慢,...
    慕瑾大大閱讀 823評(píng)論 0 4
  • 8 馬龍?jiān)缟掀鸬募保チ艘路屯^上套翔曲,張繼科欲言又止好幾次都沒注意迫像,吃了早飯就往局里趕。一陣注目禮之后瞳遍,馬龍還是...
    二二的肉閱讀 1,075評(píng)論 0 0
  • 一闻妓、顯示隱藏文件1、終端輸入defaults write com.apple.finder AppleShowAl...
    夜未殤閱讀 309評(píng)論 0 1