搜尋
首頁web前端js教程JavaScript callback回呼函數使用案例詳解

這次帶給大家JavaScript callback回呼函數使用案例詳解,JavaScript 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 += "
  • "+text+"
  • "     }     $("#tipList").css({"opacity":"1"});     $("#tipList").html(tipHTML);   } })() //如果不写jsonpCallback、后面jsonpCallback“”空置、直接跳出“接口出错了。

    注意:

    1. 使用ajax進行JSONP跨域請求,因為被要求的對方的回呼函數名稱是無法修改。而這邊頁面中會出現多個不同JSONP請求,但他們的回呼函數名稱都是同一個,_Callback。想到設定AJAX 的JSONP參數。但是發現根本不起作用。最後偶然發現 jsonpcallback是區分大小寫的。是  jsonpCallback而不是jsonpcallback;

    2. JSONP 是建構 mashup 的強大技術,但不幸的是,它並不是所有跨域通訊需求的萬靈藥。它有一些缺陷,在提交開發資源之前必須認真考慮它們。第一,也是最重要的一點,沒有關於 JSONP 呼叫的錯誤處理。如果動態腳本插入有效,就執行呼叫;如果無效,就靜默失敗。失敗是沒有任何提示的。例如,不能從伺服器捕捉 404 錯誤,也不能取消或重新開始要求。不過,等待一段時間還沒回應的話,就不用理它了。 (未來的 jQuery 版本可能有終止 JSONP 請求的特性)JSONP 的另一個主要缺陷是被不信任的服務使用時會很危險。因為 JSONP 服務傳回打包在函數呼叫中的 JSON 回應,而函數呼叫是由瀏覽器執行的,這使得宿主 Web 應用程式更容易受到各類攻擊。如果打算使用 JSONP 服務,了解能造成的威脅非常重要。

    相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

    推薦閱讀:

    vue父子元件傳值及slot應用步驟詳解

    VeeValidate在vue專案裡表單校驗使用案例程式碼分析

    #

    以上是JavaScript callback回呼函數使用案例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    JavaScript的起源:探索其實施語言JavaScript的起源:探索其實施語言Apr 29, 2025 am 12:51 AM

    JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

    幕後:什麼語言能力JavaScript?幕後:什麼語言能力JavaScript?Apr 28, 2025 am 12:01 AM

    JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

    Python和JavaScript的未來:趨勢和預測Python和JavaScript的未來:趨勢和預測Apr 27, 2025 am 12:21 AM

    Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

    Python vs. JavaScript:開發環境和工具Python vs. JavaScript:開發環境和工具Apr 26, 2025 am 12:09 AM

    Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

    JavaScript是用C編寫的嗎?檢查證據JavaScript是用C編寫的嗎?檢查證據Apr 25, 2025 am 12:15 AM

    是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

    JavaScript的角色:使網絡交互和動態JavaScript的角色:使網絡交互和動態Apr 24, 2025 am 12:12 AM

    JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

    C和JavaScript:連接解釋C和JavaScript:連接解釋Apr 23, 2025 am 12:07 AM

    C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

    從網站到應用程序:JavaScript的不同應用從網站到應用程序:JavaScript的不同應用Apr 22, 2025 am 12:02 AM

    JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

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

    熱工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    SAP NetWeaver Server Adapter for Eclipse

    SAP NetWeaver Server Adapter for Eclipse

    將Eclipse與SAP NetWeaver應用伺服器整合。

    Atom編輯器mac版下載

    Atom編輯器mac版下載

    最受歡迎的的開源編輯器

    SecLists

    SecLists

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

    SublimeText3 Linux新版

    SublimeText3 Linux新版

    SublimeText3 Linux最新版