登录  /  注册
首页 > web前端 > js教程 > 正文

JavaScript callback回调函数使用案例详解

php中世界最好的语言
发布: 2018-05-22 15:02:21
原创
1682人浏览过

这次给大家带来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中文网其它相关文章!

    智能AI问答
    PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
    来源:php中文网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    关于CSS思维导图的课件在哪? 课件
    凡人来自于2024-04-16 10:10:18
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习
    PHP中文网抖音号
    发现有趣的

    Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号