這篇文章給大家分享的是有關js回調的案例分析的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)主要為客戶提供服務項目涵蓋了網(wǎng)頁視覺設計、VI標志設計、營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應式成都網(wǎng)站建設、手機網(wǎng)站制作設計、微商城、網(wǎng)站托管及網(wǎng)站維護、WEB系統(tǒng)開發(fā)、域名注冊、國內外服務器租用、視頻、平面設計、SEO優(yōu)化排名。設計、前端、后端三個建站步驟的完善服務體系。一人跟蹤測試的建站服務標準。已經(jīng)為效果圖設計行業(yè)客戶提供了網(wǎng)站開發(fā)服務。在Javascript中,函數(shù)是第一類對象,這意味著函數(shù)可以像對象一樣按照第一類管理被使用。既然函數(shù)實際上是對象:它們能被“存儲”在變量中,能作為函數(shù)參數(shù)被傳遞,能在函數(shù)中被創(chuàng)建,能從函數(shù)中返回。因為函數(shù)是第一類對象,我們可以在Javascript使用回調函數(shù)。下面我們一起了解一下回調。
簡單地講:回調是指在另一個函數(shù)執(zhí)行完成之后被調用的函數(shù)
稍復雜地講: 在 JavaScript 中,函數(shù)也是對象。因此,函數(shù)可以傳入函數(shù)作為參數(shù),也可以被其他函數(shù)返回。這樣的函數(shù)稱為高階函數(shù)。被作為參數(shù)傳入的函數(shù)就叫做回調函數(shù)。
下面說說為什么我們需要回調?
有一個非常重要的原因——JavaScript是事件驅動的語言。這意味著,JavaScript不會因為要等待一個響應而停止當前運行,而是在監(jiān)聽其他事件時繼續(xù)執(zhí)行。
來看一個基本的例子:
function first(){ console.log(1); } function second(){ console.log(2); } first(); second();
正如你所料,first 函數(shù)首先被執(zhí)行,隨后 second 被執(zhí)行 —— 控制臺輸出下面內容:
// 1 // 2
但如果函數(shù) first 包含某種不能立即執(zhí)行的代碼會如何呢?
例如我們必須發(fā)送請求然后等待響應的 API 請求?為了模擬這種狀況,我們將使用 setTimeout,它是一個在一段時間之后調用函數(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ù)內部。那么現(xiàn)在調用函數(shù)會發(fā)生什么呢?
first(); second(); // 2 // 1
即使我們首先調用了 first() 函數(shù),我們記錄的輸出結果卻在 second() 函數(shù)之后。
這不是 JavaScript 沒有按照我們想要的順序執(zhí)行函數(shù)的問題,而是 JavaScript 在繼續(xù)向下執(zhí)行 second() 之前沒有等待 first() 響應的問題。
所以為什么給你看這個?
因為你不能一個接一個地調用函數(shù)并希望它們按照正確的順序執(zhí)行。
回調正是確保一段代碼執(zhí)行完畢之后再執(zhí)行另一段代碼的方式。
感謝各位的閱讀!關于js回調的案例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!