这次给大家带来JS callback回调函数的使用(附代码),JS callback回调函数使用的注意事项有哪些,下面就是实战案例,一起来看一下。

在使用开源项目的时候经常会使用到回调函数,如果把回调函数弄清楚了,那么对我们深入了解开源项目会有很大帮助。

回调函数百度百科的解释:

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

看上去不是那么容易理解,我们来看个例子(知乎):

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。

这样好理解多了吧,当店员被创建出来的时候,并不知道有谁会来商店里买东西,店员需要和很多不同的对象打交道,需要适配不同类型的对象,这个时候就需要回调函数了。

我们通过一个事例来理解一下回调函数的运用场景:

Me需要完成一个任务,计算1+1=?

Me如果要自己完成这个任务

代码如下:

HTML 代码

$(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中文网其它相关文章!

推荐阅读:

js接收php 回调,JS callback回调函数的使用(附代码)相关推荐

  1. JavaScript 回调(callback)函数

    此文适合JavaScript入门级选手阅读,高手就可以飘过了. 先扯点闲话.在中国,有这么一种现象:不管什么词或者概念,总会有些人把这些东西解释的神乎其神,貌似搞得别人听不懂就觉得自己很厉害的样子.其 ...

  2. 运用js在网页中输出九九乘法表 (带边框)(附代码)

    <style> td { border:1px solid #000; } </style> </head> <body> <script> ...

  3. R语言相关关系可视化函数梳理(附代码)

    来源:R语言中文社区 作者:赵镇宁 本文约3177字,建议阅读6分钟. 本文为你介绍R语言相关关系可视化的函数进行了初步梳理,大家可根据个人需求及函数功能择优选择. 当考察多个变量间的相关关系时,通常 ...

  4. 推导和实现:全面解析高斯过程中的函数最优化(附代码公式)

    来源:机器之心 本文共6262字,建议阅读8分钟. 本文从理论推导和实现详细地介绍了高斯过程,并提供了用它来近似求未知函数最优解的方法. 高斯过程可以被认为是一种机器学习算法,它利用点与点之间同质性的 ...

  5. 黄金分割(0.618)法求解函数极值(附代码)

    目录 黄金分割法 迭代公式 算法步骤: 例题 C++代码: 黄金分割法也称为中外比,指把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比.其比值是一个无理数,取其前三位数字的近似值 ...

  6. 听说双十一销售额符合三次函数?(附代码)

    先来吐槽一下:双十一过后,我估计参加不了任何超过十块的饭局! 言归正传,今天确实是被双十一销售额刷屏了 突然·,我在微博.朋友圈等地方看到,这样一种声音,从 2009-2019,淘宝天猫的双十一销售总 ...

  7. 斐波那契(Fibonacci)迭代法求解函数极值(附代码)

    目录 Fibonacci数列: 迭代公式: 算法步骤: 例题 C++代码: Fibonacci数列又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例 ...

  8. 关于js的回调函数,同步回调与异步回调

    回调定义 刚开始学习javascript时,对回调函数的理解仅仅停留在知道定义阶段.什么是回调函数? 就是将一个函数作为参数传递给另一个函数,作为参数的这个函数就是回调函数. 至于为什么要用到回调函数 ...

  9. 【Promise】入门-同步回调-异步回调-JS中的异常error处理-Promis的理解和使用-基本使用-链式调用-七个关键问题

    文章目录 1. 预备知识 1.1 实例对象与函数对象 1.2 两种类型的回调函数 1. 同步回调 2. 异步回调 1.3 JS中的异常error处理 1. 错误的类型 2. 错误处理(捕获与抛出) 3 ...

最新文章

  1. php 输出任意一个数,php 生成任意范围的水仙花数
  2. Linux操作系统(二:shell脚本)
  3. 两个半小时,一份Python基础试卷,满分100,却有80%的人都不及格
  4. 科大星云诗社动态20210218
  5. Spark(3)——通过本机文件导入到RDD
  6. Tensorflow官方文档学习理解 (五)-卷积MNIST
  7. log4j-over-slf4j与slf4j-log4j12共存stack overflow异常
  8. Swift 5.0的新特性
  9. [目标检测系列]ATSS: Bridging the Gap Between Anchor-based and Anchor-free Detection via ATSS(CVPR2020)
  10. python中stack.stack_Python stack
  11. linux终端下打开pdf文件,如何从终端打开PDF文件?
  12. 天之痕java 郡王府_轩辕剑3外传天之痕图文攻略【含支线任务】
  13. Ubuntu 安装宋体
  14. 5.计算圆周长和面积的c代码
  15. 58件女生想让男生知道的事情(男生必看)
  16. 1104-捷径(DP)
  17. NTC热敏电阻原理及应用
  18. Android获取设备的SerialNumber(SN)串号以及WIFIMac值
  19. java自学要学多久(java自学要学多久)
  20. 光纤的损耗机理 散射损耗 吸收损耗 弯曲损耗

热门文章

  1. redhat multipath配置文件简要说明
  2. 《Visual Studio Code权威指南》读后总结
  3. 你真的会用 VS Code 的 Ctrl、Shift和Alt吗?高效易用的快捷键:多光标、跳转引用等轻松搞定
  4. 【汇编语言与计算机系统结构笔记05】汇编的系统结构,从C代码生产汇编代码,一个具体的、经典的数据传送指令(mov)实例与分析
  5. php 取oracle图片,一个php导出oracle库的php代码
  6. 如何判断脸型测试软件,【图】脸型判断 教你非常准确的测试方法_脸型_伊秀美容网|yxlady.com...
  7. 三维点云学习(3)7- 实现GMM
  8. IOS开发网络篇之──ASIHTTPRequest详解
  9. windows删除文件c语言函数,c rename()函数是否删除文件?
  10. 简书吐槽大会|山东被曝大量不合格疫苗