日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

alert 回调_JavaScript中到底什么时候回调函数Callback

發(fā)布時間:2023/12/10 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 alert 回调_JavaScript中到底什么时候回调函数Callback 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是回調(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。