欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript callback回調(diào)函數(shù)用法實例分析

 更新時間:2018年05月08日 14:19:19   作者:LDH-  
這篇文章主要介紹了JavaScript callback回調(diào)函數(shù)用法,結(jié)合實例形式分析了callback回調(diào)函數(shù)的概念、功能、應用場景及相關使用技巧,需要的朋友可以參考下

本文實例講述了JavaScript callback回調(diào)函數(shù)用法。分享給大家供大家參考,具體如下:

在使用開源項目的時候經(jīng)常會使用到回調(diào)函數(shù),如果把回調(diào)函數(shù)弄清楚了,那么對我們深入了解開源項目會有很大幫助。

回調(diào)函數(shù)百度百科的解釋:

回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù)。回調(diào)函數(shù)不是由該函數(shù)的實現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時由另外的一方調(diào)用的,用于對該事件或條件進行響應。

看上去不是那么容易理解,我們來看個例子(知乎):

你到一個商店買東西,剛好你要的東西沒有貨,于是你在店員那里留下了你的電話,過了幾天店里有貨了,店員就打了你的電話,然后你接到電話后就到店里去取了貨。在這個例子里,你的電話號碼就叫回調(diào)函數(shù),你把電話留給店員就叫登記回調(diào)函數(shù),店里后來有貨了叫做觸發(fā)了回調(diào)關聯(lián)的事件,店員給你打電話叫做調(diào)用回調(diào)函數(shù),你到店里去取貨叫做響應回調(diào)事件。

這樣好理解多了吧,當?shù)陠T被創(chuàng)建出來的時候,并不知道有誰會來商店里買東西,店員需要和很多不同的對象打交道,需要適配不同類型的對象,這個時候就需要回調(diào)函數(shù)了。

我們通過一個事例來理解一下回調(diào)函數(shù)的運用場景:

Me需要完成一個任務,計算1+1=?

Me如果要自己完成這個任務

代碼如下:

HTML 代碼

<div class="imgDiv">
  <div class="search">
    <input class="put" type="text" id="keyWord"/>
    <ul id="tipList"></ul>
</div>

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);
  };
  //獲取數(shù)據(jù)
  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 += "<li>"+text+"</li>"
    }
    $("#tipList").css({"opacity":"1"});
    $("#tipList").html(tipHTML);
  }
})()
//如果不寫jsonpCallback、后面jsonpCallback“”空置、直接跳出“接口出錯了。

注意:

1. 使用ajax進行 JSONP跨域請求,因為被請求的對方的回調(diào)函數(shù)名稱是無法修改。而這邊頁面中會出現(xiàn)多個不同JSONP請求,但他們的回調(diào)函數(shù)名稱都是同一個,_Callback。想到設置AJAX 的JSONP參數(shù)。但是發(fā)現(xiàn)根本不起作用。最后偶然發(fā)現(xiàn) jsonpcallback是區(qū)分大小寫的。是  jsonpCallback而不是jsonpcallback;

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

更多關于JavaScript相關內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • JS eval代碼快速解密實例解析

    JS eval代碼快速解密實例解析

    這篇文章主要介紹了JS eval代碼快速解密實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 提升JavaScript加載速度的10種方式

    提升JavaScript加載速度的10種方式

    在許多現(xiàn)代網(wǎng)站中,有大量的JavaScript,事實上,JavaScript的下載和解析都需要時間,這使得網(wǎng)站的加載速度大大降低,有一些簡單的方法可以減少你在網(wǎng)站上加載的JavaScript數(shù)量,并使你正在加載的JavaScript加載得更快,我們今天將介紹這些方法
    2023-06-06
  • JS實現(xiàn)關鍵詞高亮顯示正則匹配

    JS實現(xiàn)關鍵詞高亮顯示正則匹配

    這篇文章主要介紹了JS實現(xiàn)關鍵詞高亮顯示正則匹配功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • javascript實現(xiàn)表單提交后,提交按鈕不可用的方法

    javascript實現(xiàn)表單提交后,提交按鈕不可用的方法

    這篇文章主要介紹了javascript實現(xiàn)表單提交后,提交按鈕不可用的方法,涉及javascript動態(tài)修改表單樣式的技巧,非常簡單實用,需要的朋友可以參考下
    2015-04-04
  • JS中給數(shù)組去重的方法小結(jié)

    JS中給數(shù)組去重的方法小結(jié)

    給一個存放數(shù)字或字符串的數(shù)組去重很簡單,那么現(xiàn)在問題升級,如何一個數(shù)組a里面存放的元素是若干個數(shù)組,那么如何給這個數(shù)組a去重?本文給大家介紹了JS中給數(shù)組去重的方法小結(jié),需要的朋友可以參考下
    2024-08-08
  • 小程序如何定位所在城市及發(fā)起周邊搜索

    小程序如何定位所在城市及發(fā)起周邊搜索

    這篇文章主要介紹了小程序如何定位所在城市及發(fā)起周邊搜索,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • 正則表達式基本語法及表單驗證操作詳解【基于JS】

    正則表達式基本語法及表單驗證操作詳解【基于JS】

    這篇文章主要介紹了正則表達式基本語法及表單驗證操作,較為詳細的分析了正則表達式的基本語法以及基于JS實現(xiàn)的表單正則驗證操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2017-04-04
  • JointJS JavaScript流程圖繪制框架解析

    JointJS JavaScript流程圖繪制框架解析

    這篇文章主要介紹了JointJS JavaScript流程圖繪制框架解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 原生Js實現(xiàn)的畫廊功能

    原生Js實現(xiàn)的畫廊功能

    這篇文章主要介紹了原生Js實現(xiàn)的畫廊功能,幫助大家更好的理解和學習使用JavaScript,感興趣的朋友可以了解下
    2021-05-05
  • 關于JS與jQuery中的文檔加載問題

    關于JS與jQuery中的文檔加載問題

    本文通過實例代碼給大家講解了js和jquery中的文檔加載問題,感興趣的的朋友一起看看吧
    2017-08-08

最新評論