首先從callback的字面翻譯「回呼」 可以理解這是一個函數被調用的機制
#當我們遇到一個名詞首先可能是百度谷歌搜尋看官方是怎麼解釋的
下面是維基百科對回呼的定義:
a callback is a piece of executable code that is passed as an argument to other code which is expected to call back (execute) the argument at some convenient time
硬翻譯: 一個回呼函數是作為另一個函數的參數的一個可執行的程式碼段這個程式碼段在方便的時間來執行
通俗形象的解釋: 把函數f2當作一個參數傳給函數f1 並且在f1裡適當的時間執行f2(下面的所有例子我都用f1,f2表示)
所以我們可以得到一個這樣的回調函數模式
function f1(f2) { //f1要执行的一些代码 if (f2 && typeof(f2) === "function") { //对f2做判断是否存在并且是一个函数 f2(); } }
這裡要注意兩點參數裡的f2是一個指向f2這個函數的指標所以f2後面不能加括號
而f1內部的f2後面要有括號因為這時我們要呼叫執行f2 ,所以要寫f2()
我們把這個模式實例化看下他的執行結果
声明函数function f1(f2) { alert("我是f1");if (f2 && typeof(f2) === "function") { //写上判断是个好习惯f2() } } 执行 f1(function() { alert("我是f2"); }) 结果://"我是f1",“我是f2”
我們看下整個函數執行的過程 當呼叫f1(function(){alert("我是f2 ");})的時候
先把一個匿名函數傳給了f1() 而這個匿名函數就是宣告函數裡的參數f2 javascript程式是從上到下執行先執行了alert("我是f1"); 然後執行了f2();
那我們可不可以這樣寫呢
function f1(f2) { alert("我是f1"); if (f2 && typeof(f2) === "function") { f2() } alert("我又是f1 哈哈"); } 执行 f1(function(){ alert("我是f2"); })//结果:我是f1 ,我是f2,我又是1 哈哈
再看對callback的定義,我們可以讓callback在我們想要執行的時候執行,不影響f1本身的執行流
但為了封裝和美觀大多數我們會這樣寫
function f1(f2){ if (f2 && typeof(f2) === "function") { settimeOut(function(){f2()},1000) ;//f1执行1s后f2执行} }function f2(){/**/} f1(f2);
其實回呼函數沒那麼複雜的,在js裡面,function你可以當成一個普通的參數。只要後面加上(),就表示呼叫這個函數了。
再看看下面這個例子
$(function(){ function funcname(param){ //do something //callback param.callback(); } //调用 funcname({ callback:function(){ alert('callback do'); } }); });
從上面的例子也可以看出來,其實每定義一個函數,都會將函數入容器的棧,index就是函數名。預設是在window下,因此可以把字串丟過去,在window下也可以透過字串呼叫到這個回呼函數。
帶參數的話,可以採用上面的方式。
例如jQuery裡的一個例子
$("#div1").fadeOut("fast",functin(){ $("#div2").fadeIn("slow"); })
讓#div快速隱藏然後讓#div2漸漸顯示,在jQuery裡有大量的callback函數
並且有一個專門的有一個方法callbacks來管理
jQuery.Callbacks = function( options ) {...}
最後我說下我最近在專案中用到的callback吧
hybrid app 功能大概就是我向ios發送一個請求ios返回給我的json資料然後我將返回的資料解析插入到web頁面上
//首先我写一个javascript和ios通信callback函数(简化)getData(callback){ settimeOut(function(){callback(iso_return)},100); }//然后我向ios发送一个请求function getSinersReuest(){window.location.href="vvmusic://....callback=getSinersData"}/*然后ios截获url中的callback执行getData(getSinersData)返回给我数据;我的getSinersData是我想把ios返回的json插入到页面显示8*/getSinersData(iso_return){ ......... }//当页面加载的时候调用window.onload=function(){ getSinersReuest(); }
以上是jQuery如何自訂一個回呼函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

javaandjavascriptaredistinctlanguages:javaisusedforenterpriseandmobileapps,while javascriptifforInteractiveWebpages.1)JavaisComcompoppored,statieldinglationallyTypted,statilly tater astrunsonjvm.2)

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用

Dreamweaver CS6
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境