zoukankan      html  css  js  c++  java
  • JQuery日记6.7 Javascript异步模型(二)

    异步模型看起来非常美,但事实上它也是有天生缺陷的.看以下代码


    try {
          setTimeout( function(){
                 throw new Error( '你抓不到我的!' );
          }, 100);
    } catch (e) {
          console.error(e);
    }
    

    假设你已经理解了上一篇博客,那你一定了解了这种写法是捕获不到错误e的,setTimeout是排在catch(e){}运行完成后,捕获错误时压根还没运行throw new Error()当然捕获不到了.

    相同的道理我们也没法得到异步函数的返回值.
    var a;
    setTimeout( function(){
       a = 5;
    },0);
          
    console.info(a);//undefined
    

    从编程风格上看,这样也不够友好,回调函数都直接耦合在异步函数中(尽管非常多UI程序猿觉得这样才更习惯).
    新式ajax:
    $('ajax').then(successHandler, errorHandler)

    老式ajax:
    $('ajax',function(result){
         process(result);             
    })
    
    于是非常多大牛就提出了Promises模式来解决异步函数的编程风格和上面提到的两个缺陷,相应到JQuery里的实现就是Callbacks模块和Deferred,Callbacks用来存储触发回调函数,Deffered就是Promises模式的详细实现.




查看全文
  • 相关阅读:
    机器学习算法(SVM)公开课4月25日开讲
    手把手教你做文本挖掘
    ActiveReports公开课开启报名,学习如何解决中国式复杂报表难题
    DevExpress免费公开课,讲解即将发布的16.2新版功能
    Stimulsoft入门视频
    免费公开课,讲解强大的文档集成组件Aspose,现在可报名
    中国式商业智能报表ActiveReports免费公开课,10月20日开讲
    JavaScript图表FusionCharts免费在线公开课,由印度原厂技术工程师主讲,10月13日发车
    LoadRunner免费公开课,惠普金牌讲师亲授
    DevExpress VCL v16.1.3发布
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10849150.html
  • Copyright © 2011-2022 走看看