溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在JavaScript中使用callback回調(diào)函數(shù)

發(fā)布時間:2021-03-24 15:01:17 來源:億速云 閱讀:149 作者:Leah 欄目:web開發(fā)

如何在JavaScript中使用callback回調(diào)函數(shù)?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

基本理解一個概念

回調(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傳進去
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

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI