javascript
alert 回调_JavaScript中到底什么时候回调函数Callback
什么是回調函數Callback
簡單的理解:回調函數是在另一個函數執行完畢后執行的函數 - 因此名稱為'call back'。
復雜的理解:在JavaScript中,函數是對象。因此,函數可以將函數作為參數,并且可以由其他函數返回。執行此操作的函數稱為高階函數。任何作為參數傳遞的函數都稱為回調函數。
為什么需要回調函數Callback
一個非常重要的原因 - JavaScript是一種事件驅動的語言。這意味著,在繼續之前,JavaScript不會等待響應,而是在偵聽其他事件時繼續執行。
看一個基本的例子:
function first(){ console.log(1);}function second(){ console.log(2);}first();second();正如您所料,首先執行函數,然后執行第二個函數 - 將以下內容記錄到控制臺:
// 1// 2但是如果函數首先包含某種無法立即執行的代碼呢?例如,我們必須發送請求然后等待響應的API請求?為了模擬這個動作,我們將使用setTimeout,這是一個在一段時間后調用函數的JavaScript函數。我們將函數延遲500毫秒來模擬API請求。我們的新代碼如下所示:
function first(){ // Simulate a code delay 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沒有按照我們想要的順序執行我們的函數,而是在繼續執行second()之前,JavaScript沒有等待來自first()的響應。
創建一個回調函數Callback
function doHomework(subject) { alert(`Starting my ${subject} homework.`);}上面,我們創建了doHomework函數。我們的函數接受一個變量,通過在控制臺中鍵入以下內容來調用您的函數:
doHomework('math');// Alerts: Starting my math homework.現在讓我們添加回調 - 作為doHomework()函數中的最后一個參數,我們可以在回調中傳遞。然后在我們調用doHomework()的第二個參數中定義回調函數。
function doHomework(subject, callback) { alert(`Starting my ${subject} homework.`); callback();}doHomework('math', function() { alert('Finished my homework');});但是回調函數并不總是必須在函數調用中定義。可以在我們的代碼中的其他位置定義
function doHomework(subject, callback) { alert(`Starting my ${subject} homework.`); callback();}function alertFinished(){ alert('Finished my homework');}doHomework('math', alertFinished);結果是一樣的
總結
以上是生活随笔為你收集整理的alert 回调_JavaScript中到底什么时候回调函数Callback的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php ../ 和 ./ 区别,php
- 下一篇: 大哥还是大哥!一汽-大众公布6月销量:狂