js回调函数如何实现异步,给一个例子

 我来答
帮助_li
2015-07-31 · TA获得超过2140个赞
知道大有可为答主
回答量:1288
采纳率:65%
帮助的人:694万
展开全部

异步处理不用阻塞来等待处理完成,而是允许后续操作,直至其程序将处理完成,并回调通知此函数

那么在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);
});
百度网友5e99258cf
2014-03-29 · TA获得超过1687个赞
知道大有可为答主
回答量:1299
采纳率:71%
帮助的人:696万
展开全部

异步清楚嘛?

当一个函数执行需要很久的时候JS就会异步执行下一个函数,而不会等当前函数执行完再执行下面的函数

回调函数:

回调函数呢就是为了防止这样而在一个函数执行完之前不让程序先去执行下面的函数,因为下面的函数可能需要上面执行函数的返回值,所以才出来了回调函数。

其实回调也是个函数如果这个回调函数仍然需要很久的话那么也会产生异步。所以就是说回调函数执行时间过久,JS就会直接执行下面的函数而不会执行回调函数。这么说好理解了吧~例子呢就用

settimeout做演示就行了~用延时来代替等待时间就可以了(用ajax做示例)~

(function(){
$.ajax({
    url:"123.json",
    success:function(msg){
        setTimeout(alert(msg),3000);
    }
})

这个就是回调函数异步执行了~会先弹出先执行,然后再弹出msg的内容~

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式