美文网首页JavaScript
[JavaScript] 同步回调与异步回调

[JavaScript] 同步回调与异步回调

作者: 何幻 | 来源:发表于2016-03-07 07:16 被阅读598次

    同步回调的例子:

    function highOrderFunc(callback){
        callback();
    }
    
    setTimeout(function(){
        alert(1);    //后执行
    },0);
    highOrderFunc(function(){
        alert(2);    //先执行
    });
    
    结果:2 1
    

    异步回调的例子:

    function asyncTask(success){
        sendAjax({
            url:'/',
            success:success
        });
    }
    
    setTimeout(function(){
        alert(1);    //先执行
    },0);
    asyncTask(function(){
        alert(2);    //后执行
    });
    
    结果:1 2
    

    之所以有这样的差异,是因为浏览器对同步回调和异步回调的实现方式不同

    浏览器对同步回调的实现方式是单线程的,拿到参数函数以及它的词法环境,直接调用即可。
    而对于异步回调,需要另起一个线程,让函数先返回。当异步任务执行完后,再把事件放到任务队列中,依赖事件循环机制来触发

    相关文章

      网友评论

        本文标题:[JavaScript] 同步回调与异步回调

        本文链接:https://www.haomeiwen.com/subject/otdnkttx.html