JS回調(diào)函數(shù) callback的理解與使用案例分析
本文實例講述了JS回調(diào)函數(shù) callback的理解與使用。分享給大家供大家參考,具體如下:
基本理解一個概念
回調(diào)函數(shù)回頭再調(diào)用函數(shù),等主干事情干完了,再回頭干分支上的事情。
官方定義
A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.
實例1
//定義主函數(shù),回調(diào)函數(shù)作為參數(shù) function A(callback) { callback(); console.log('我是主函數(shù)'); } //定義回調(diào)函數(shù) function B(){ setTimeout("console.log('我是回調(diào)函數(shù)')", 3000);//模仿耗時操作 } //調(diào)用主函數(shù),將函數(shù)B傳進(jìn)去 A(B);
輸出結(jié)果:
我是主函數(shù)
我是回調(diào)函數(shù)
實例2
function a() { console.log("執(zhí)行a函數(shù)"); setTimeout(function(){ console.log("執(zhí)行a函數(shù)的延遲函數(shù)"); },1000); function b() { console.log("執(zhí)行函數(shù)b"); ); a(); b(); };
輸出結(jié)果
以上代碼會先執(zhí)行函數(shù)a,而且不會等到a中的延遲函數(shù)執(zhí)行完才執(zhí)行函數(shù)b, 在延遲函數(shù)被觸發(fā)的過程中就執(zhí)行了函數(shù)b,當(dāng)js引擎的event 隊列空閑時才會去執(zhí)行隊列里等待的setTimeout的回調(diào)函數(shù),這就是一個異步的例子
調(diào)用 setTimeout 函數(shù)會在一個時間段過去后在隊列中添加一個消息。這個時間段作為函數(shù)的第二個參數(shù)被傳入。如果隊列中沒有其它消息,消息會被馬上處理。但是,如果有其它消息,setTimeout 消息必須等待其它消息處理完。因此第二個參數(shù)僅僅表示最少的時間 而非確切的時間
所以即使,時間設(shè)置為0,也是會照樣先執(zhí)行函數(shù)b
結(jié)語
回調(diào)函數(shù)廣泛運用在同步(sync)和異步(async)
常見的:
還需要深挖:js單線程和js異步
瀏覽器常駐三大線程: js引擎線程,GUI渲染線程,瀏覽器事件觸發(fā)線程
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
JavaScript?邏輯且(&&)和邏輯或(||)的運用小結(jié)
這篇文章主要介紹了JavaScript?邏輯且(&&)和邏輯或(||)的妙用?,通過實例代碼介紹了邏輯且(&&)和邏輯或(||)的詳細(xì)用法,需要的朋友可以參考下2022-09-09js如何監(jiān)聽input輸入事件及使用防抖封裝函數(shù)處理方法
這篇文章主要給大家介紹了關(guān)于js如何監(jiān)聽input輸入事件及使用防抖封裝函數(shù)處理方法的相關(guān)資料,最近有一個需求,需要我們實時監(jiān)聽input輸入框中的內(nèi)容,從而帶來更好的用戶體驗,需要的朋友可以參考下2023-07-07uniapp使用u-upload組件來實現(xiàn)圖片上傳功能
最近在用uniapp開發(fā)微信小程序,下面這篇文章主要給大家介紹了關(guān)于uniapp使用u-upload組件來實現(xiàn)圖片上傳功能的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01javaScript給元素添加多個class的簡單實現(xiàn)
下面小編就為大家?guī)硪黄猨avaScript給元素添加多個class的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07