溫馨提示×

溫馨提示×

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

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

js為什么要回調(diào)

發(fā)布時間:2021-12-14 11:44:43 來源:億速云 閱讀:193 作者:柒染 欄目:開發(fā)技術(shù)

本篇文章為大家展示了js為什么回調(diào)?,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

在Javascript中,函數(shù)是第一類對象,這意味著函數(shù)可以像對象一樣按照第一類管理被使用。既然函數(shù)實際上是對象:它們能被“存儲”在變量中,能作為函數(shù)參數(shù)被傳遞,能在函數(shù)中被創(chuàng)建,能從函數(shù)中返回。因為函數(shù)是第一類對象,我們可以在Javascript使用回調(diào)函數(shù)。下面我們一起了解一下回調(diào)。

簡單地講:回調(diào)是指在另一個函數(shù)執(zhí)行完成之后被調(diào)用的函數(shù)

稍復(fù)雜地講: 在 JavaScript 中,函數(shù)也是對象。因此,函數(shù)可以傳入函數(shù)作為參數(shù),也可以被其他函數(shù)返回。這樣的函數(shù)稱為高階函數(shù)。被作為參數(shù)傳入的函數(shù)就叫做回調(diào)函數(shù)。

下面說說為什么我們需要回調(diào)?

有一個非常重要的原因——JavaScript是事件驅(qū)動的語言。這意味著,JavaScript不會因為要等待一個響應(yīng)而停止當(dāng)前運行,而是在監(jiān)聽其他事件時繼續(xù)執(zhí)行。

來看一個基本的例子:

function first(){  console.log(1);}function second(){  console.log(2);}first();second();

正如你所料,first 函數(shù)首先被執(zhí)行,隨后 second 被執(zhí)行 —— 控制臺輸出下面內(nèi)容:

// 1// 2

但如果函數(shù) first 包含某種不能立即執(zhí)行的代碼會如何呢?

例如我們必須發(fā)送請求然后等待響應(yīng)的 API 請求?為了模擬這種狀況,我們將使用 setTimeout,它是一個在一段時間之后調(diào)用函數(shù)的 JavaScript 函數(shù)。我們將函數(shù)延遲 500 毫秒來模擬一個 API 請求,新代碼長這樣:

function first(){// 模擬代碼延遲  setTimeout( function(){console.log(1);  }, 500 );}function second(){  console.log(2);}first();second();

現(xiàn)在理解 setTimeout() 是如何工作的并不重要,重要的是你看到了我們已經(jīng)把 console.log(1); 移動到了 500 秒延遲函數(shù)內(nèi)部。那么現(xiàn)在調(diào)用函數(shù)會發(fā)生什么呢?

first();second();// 2// 1

即使我們首先調(diào)用了 first() 函數(shù),我們記錄的輸出結(jié)果卻在 second() 函數(shù)之后。

這不是 JavaScript 沒有按照我們想要的順序執(zhí)行函數(shù)的問題,而是 JavaScript 在繼續(xù)向下執(zhí)行 second() 之前沒有等待 first() 響應(yīng)的問題。

所以為什么給你看這個?

因為你不能一個接一個地調(diào)用函數(shù)并希望它們按照正確的順序執(zhí)行。

回調(diào)正是確保一段代碼執(zhí)行完畢之后再執(zhí)行另一段代碼的方式。

上述內(nèi)容就是js為什么回調(diào)?,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

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

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

js
AI