亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

js回調的案例分析

發布時間:2020-10-28 10:40:05 來源:億速云 閱讀:146 作者:小新 欄目:web開發

這篇文章給大家分享的是有關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回調的案例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

民丰县| 海城市| 通州区| 襄城县| 嘉义市| 醴陵市| 资源县| 兴安县| 京山县| 星座| 四平市| 雷州市| 濮阳县| 东源县| 乐东| 永嘉县| 泰安市| 台南市| 万全县| 延安市| 建湖县| 鸡东县| 扶绥县| 三原县| 迁西县| 汉阴县| 波密县| 鹤峰县| 武乡县| 普陀区| 霸州市| 肃宁县| 汶川县| 德昌县| 望奎县| 嘉黎县| 云阳县| 洞头县| 梓潼县| 吉水县| 梅河口市|