什么是JavaScript中的回调函数,作用是什么?
5个回答
展开全部
一般来说Ajax最大的一个回调函数就是onreadystatechange,这个应该成为事件,每次XMLHttpRequest这个Object在URL请求,状态改变的时候就会触发这个事件。那么你用onreadystatechange=一个函数,这样让你的函数在XMLHttpRequest state change 的时候可以及时捕捉到。当然就不用setTimeout来捕捉啦。所以会方便,在你的回调函数里面可以检测Ajax对象的值,包括返回的请求的HTML,当然只有在readyState=4的时候而且status=200的时候才能用。status就是HTML状态,有200,400,500之类的。
总之,回调函数就是一个自定义的函数,在发生特定的事件的时候调用来处理这个事件的函数。
总之,回调函数就是一个自定义的函数,在发生特定的事件的时候调用来处理这个事件的函数。
展开全部
回调函数的意思就是在你执行过一个事件或者动作之后,你想它接着能够继续做的事件。
例如当你用ajax请求一个数据之后,当数据请求回来了,你希望可以进行一个动作去告诉你数据已经请求好了,那么此时就可以使用一个回调函数来执行你所期望的事件。
例如当你用ajax请求一个数据之后,当数据请求回来了,你希望可以进行一个动作去告诉你数据已经请求好了,那么此时就可以使用一个回调函数来执行你所期望的事件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
In computer programming, a callback is a reference to a piece of executable code that is passed as an argument to other code.
计算机编程中,回调函数是作为参数传递给函数的一段可执行代码(函数)的引用。
在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。
计算机编程中,回调函数是作为参数传递给函数的一段可执行代码(函数)的引用。
在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-06-27 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
js 中的回调函数 和其他语言中的回调函数一样啊。
就是有一个 方法,这个方法的参数有点小脾气,其中一个或多个参数要求的类型是方法,这个方法就 是回调函数。
当这个方法执行完成,或者中间步骤会使用你传入的这个方法……
function a(x,c){
c(x);
}
a("hello!",function( y ){
alert(y);
})
例子如上,
当写a函数的时候,还不知道 c 是干什么的 ,只知道要对x做某件事情,当然x是什么也不知道
当调用 函数a 时,知道了 被操作的值 x 为 “hello!”,而操作方法是 alert,如此而已
就是有一个 方法,这个方法的参数有点小脾气,其中一个或多个参数要求的类型是方法,这个方法就 是回调函数。
当这个方法执行完成,或者中间步骤会使用你传入的这个方法……
function a(x,c){
c(x);
}
a("hello!",function( y ){
alert(y);
})
例子如上,
当写a函数的时候,还不知道 c 是干什么的 ,只知道要对x做某件事情,当然x是什么也不知道
当调用 函数a 时,知道了 被操作的值 x 为 “hello!”,而操作方法是 alert,如此而已
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var req;
function validate() {
var idField = document.getElementById("userid");
var url = "Validate.jsp?id=" + encodeURI(idField.value);
init();
req.open("GET", url, true);
req.onreadystatechange = callback;
//callback就是回调函数,当触发req.onreadystatechange时,调用callback获取url传回的东西
req.send(null);
}
function init() {
if(window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function callback() {
if(req.readyState == 4) { //反馈回到客户端
if(req.status == 200) { //反馈完全正常
//alert(req.responseText);
var msg = req.responseXML.getElementsByTagName("msg")[0];
//alert(msg);
setMsg(msg.childNodes[0].nodeValue);
}
}
}
function setMsg(msg) {// 页面中的span <span id="usermsg"></span>
//alert(msg);
mdiv = document.getElementById("usermsg");
if(msg == "invalid") {
mdiv.innerHTML = "<font color='red'>username exists</font>";
} else {
mdiv.innerHTML = "<font color='green'>congratulations! you can use this username!</font>";
}
}
Validate.jsp
<%
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-store"); //HTTP1.1
response.setHeader("Pragma", "no-cache"); //HTTP1.0
response.setDateHeader("Expires", 0); //prevents catching at proxy server
System.out.println(request.getParameter("id"));
//check the database 可以先去数据库取
response.getWriter().write("<msg>valid</msg>");//写这个内容,随便指定
%>
function validate() {
var idField = document.getElementById("userid");
var url = "Validate.jsp?id=" + encodeURI(idField.value);
init();
req.open("GET", url, true);
req.onreadystatechange = callback;
//callback就是回调函数,当触发req.onreadystatechange时,调用callback获取url传回的东西
req.send(null);
}
function init() {
if(window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function callback() {
if(req.readyState == 4) { //反馈回到客户端
if(req.status == 200) { //反馈完全正常
//alert(req.responseText);
var msg = req.responseXML.getElementsByTagName("msg")[0];
//alert(msg);
setMsg(msg.childNodes[0].nodeValue);
}
}
}
function setMsg(msg) {// 页面中的span <span id="usermsg"></span>
//alert(msg);
mdiv = document.getElementById("usermsg");
if(msg == "invalid") {
mdiv.innerHTML = "<font color='red'>username exists</font>";
} else {
mdiv.innerHTML = "<font color='green'>congratulations! you can use this username!</font>";
}
}
Validate.jsp
<%
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-store"); //HTTP1.1
response.setHeader("Pragma", "no-cache"); //HTTP1.0
response.setDateHeader("Expires", 0); //prevents catching at proxy server
System.out.println(request.getParameter("id"));
//check the database 可以先去数据库取
response.getWriter().write("<msg>valid</msg>");//写这个内容,随便指定
%>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询