您好,登錄后才能下訂單哦!
本篇文章為大家展示了js為什么回調?,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
在Javascript中,函數是第一類對象,這意味著函數可以像對象一樣按照第一類管理被使用。既然函數實際上是對象:它們能被“存儲”在變量中,能作為函數參數被傳遞,能在函數中被創建,能從函數中返回。因為函數是第一類對象,我們可以在Javascript使用回調函數。下面我們一起了解一下回調。
簡單地講:回調是指在另一個函數執行完成之后被調用的函數
稍復雜地講: 在 JavaScript 中,函數也是對象。因此,函數可以傳入函數作為參數,也可以被其他函數返回。這樣的函數稱為高階函數。被作為參數傳入的函數就叫做回調函數。
下面說說為什么我們需要回調?
有一個非常重要的原因——JavaScript是事件驅動的語言。這意味著,JavaScript不會因為要等待一個響應而停止當前運行,而是在監聽其他事件時繼續執行。
來看一個基本的例子:
function first(){ console.log(1);}function second(){ console.log(2);}first();second();
正如你所料,first 函數首先被執行,隨后 second 被執行 —— 控制臺輸出下面內容:
// 1// 2
但如果函數 first 包含某種不能立即執行的代碼會如何呢?
例如我們必須發送請求然后等待響應的 API 請求?為了模擬這種狀況,我們將使用 setTimeout,它是一個在一段時間之后調用函數的 JavaScript 函數。我們將函數延遲 500 毫秒來模擬一個 API 請求,新代碼長這樣:
function first(){// 模擬代碼延遲 setTimeout( function(){console.log(1); }, 500 );}function second(){ console.log(2);}first();second();
現在理解 setTimeout() 是如何工作的并不重要,重要的是你看到了我們已經把 console.log(1); 移動到了 500 秒延遲函數內部。那么現在調用函數會發生什么呢?
first();second();// 2// 1
即使我們首先調用了 first() 函數,我們記錄的輸出結果卻在 second() 函數之后。
這不是 JavaScript 沒有按照我們想要的順序執行函數的問題,而是 JavaScript 在繼續向下執行 second() 之前沒有等待 first() 響應的問題。
所以為什么給你看這個?
因為你不能一個接一個地調用函數并希望它們按照正確的順序執行。
回調正是確保一段代碼執行完畢之后再執行另一段代碼的方式。
上述內容就是js為什么回調?,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。