js回调函数如何实现异步,给一个例子
2个回答
展开全部
异步处理不用阻塞来等待处理完成,而是允许后续操作,直至其程序将处理完成,并回调通知此函数
那么在js中有如下几种异步方式:
示例1
var async=function(callback){
//read data
setTimeout(function(){
callback('data');
},1000);//1秒后回调
};
//使用
async(function(data){
alert(data);
});
示例2
var async=function(callback){
var xhr=new XMLHttpRequest();
xhr.open('get','.',true);
xhr.onreadystatechange=function(){
callback(xhr.readyStatus);
};
xhr.send();
};
async(function(data){
alert(data);
});
示例3
var async=function(callback){
var img=new Image();
img.onload=img.onerror=function(){
callback(img);
};
img.src='x.jpg';
};
async(function(data){
alert(data);
});
展开全部
异步清楚嘛?
当一个函数执行需要很久的时候JS就会异步执行下一个函数,而不会等当前函数执行完再执行下面的函数
回调函数:
回调函数呢就是为了防止这样而在一个函数执行完之前不让程序先去执行下面的函数,因为下面的函数可能需要上面执行函数的返回值,所以才出来了回调函数。
其实回调也是个函数如果这个回调函数仍然需要很久的话那么也会产生异步。所以就是说回调函数执行时间过久,JS就会直接执行下面的函数而不会执行回调函数。这么说好理解了吧~例子呢就用
settimeout做演示就行了~用延时来代替等待时间就可以了(用ajax做示例)~
(function(){
$.ajax({
url:"123.json",
success:function(msg){
setTimeout(alert(msg),3000);
}
})
这个就是回调函数异步执行了~会先弹出先执行,然后再弹出msg的内容~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询