這次帶給大家JS callback回呼函數的使用(附程式碼),JS callback回呼函數所使用的注意事項有哪些,以下就是實戰案例,一起來看一下。
在使用開源專案的時候經常會使用到回呼函數,如果把回呼函數弄清楚了,那麼對我們深入了解開源專案會有很大幫助。
回呼函數百度百科的解釋:
回呼函數就是一個透過函數指標呼叫的函數。如果你把函數的指標(位址)當作參數傳遞給另一個函數,當這個指標被用來呼叫所指向的函數時,我們就說這是回呼函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。
看起來不是那麼容易理解,我們來看個例子(知乎):
你到一個商店買東西,剛好你要的東西沒有貨,於是你在店員那裡留下了你的電話,過了幾天店裡有貨了,店員就打了你的電話,然後你接到電話後就到店裡去取了貨。在這個例子裡,你的電話號碼就叫回調函數,你把電話留給店員就叫登記回調函數,店裡後來有貨了叫做觸發了回調關聯的事件,店員給你打電話叫做調用回調函數,你到店裡去取貨叫做回應回調事件。
這樣好理解多了吧,當店員被創建出來的時候,並不知道有誰會來商店裡買東西,店員需要和很多不同的對像打交道,需要適配不同類型的對象,這時候就需要回呼函數了。
我們透過一個例子來理解一下回呼函數的運用場景:
Me需要完成一個任務,計算1 1=?
Me如果要自己完成這個任務
程式碼如下:
#HTML 程式碼
<p> </p><p> <input> </p>
JavaScript程式碼
(function (){ $(function(){ $("#keyWord").on("keyup",function(event){ var keyCode = event.keyCode; if(keyCode == 38|| keyCode ==40){ settingTipList(keyCode); return false; } var keyWord = $(this).val(); getTipList(keyWord); }); var index = -1; function settingTipList(keyCode){ if(keyCode == 38){ index--; }else{ index++; } var size = $("#tipList li").size(); index =index % size; $("#tipList li").removeClass("active").eq(index).addClass("active"); var selectLiContent = $("#tipList li").eq(index).html(); $("#keyWord").val(selectLiContent); }; //获取数据 function getTipList(keyWord){ var url = "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su"; var data = { wd:keyWord, cb:"hhh" }; $.ajax({ url:url, data:data, type:"GET", dataType:"jsonp", jsonpCallback:"hhh", success:function(data){ var tipList = data.s; handleData(tipList) }, error:function(error){ alert("接口出错") } }); } }); function handleData(tipList){ var tipHTML= ""; for(var i in tipList){ var text = tipList[i]; tipHTML += "
注意:
1. 使用ajax進行JSONP跨域請求,因為被要求的對方的回呼函數名稱是無法修改。而這邊頁面中會出現多個不同JSONP請求,但他們的回呼函數名稱都是同一個,_Callback
。想到設定AJAX 的JSONP參數。但是發現根本不起作用。最後偶然發現 jsonpcallback
是區分大小寫的。是 jsonpCallback而不是jsonpcallback;
2. JSONP 是建構 mashup 的強大技術,但不幸的是,它並不是所有跨域通訊需求的萬靈藥。它有一些缺陷,在提交開發資源之前必須認真考慮它們。第一,也是最重要的一點,沒有關於 JSONP 呼叫的錯誤處理。如果動態腳本插入有效,就執行呼叫;如果無效,就靜默失敗。失敗是沒有任何提示的。例如,不能從伺服器捕捉 404 錯誤,也不能取消或重新開始要求。不過,等待一段時間還沒回應的話,就不用理它了。 (未來的 jQuery 版本可能有終止 JSONP 請求的特性)JSONP 的另一個主要缺陷是被不信任的服務使用時會很危險。因為 JSONP 服務傳回打包在函數呼叫中的 JSON 回應,而函數呼叫是由瀏覽器執行的,這使得宿主 Web 應用程式更容易受到各類攻擊。如果打算使用 JSONP 服務,了解能造成的威脅非常重要。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是JS callback回呼函數的使用(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

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

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。