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