JavaScript的异步开发

来源:互联网 发布:网络奇兵3什么时候出 编辑:程序博客网 时间:2024/06/04 18:32

    最近一个使用JavaScript开发的SharePoint项目,里面需要使用各种JavaScript去操作SharePoint的list,但在开发过程中,我被JavaScript的异步彻底击毁,一直以来,我以为我掌握了JavaScript的异步,但我发现我只掌握了一些皮毛,所以我将我在这个项目中对异步做如下总结。

    要实现JavaScript的异步,可以采用如下方法:

    1.回调函数:

var get=function(callback){    var myInfomation="hello world";//从某处得到了这个信息:hello world    callback{       success="true",       myInformation:myInfomation    }}
get(function(result){    if(result.success){        var myInfomation=result.myInfomation;        //your codes to operate the infomation    }});

    2.Promise:

     Jquery的Deferred对象就是Promise的一种实现。 我们做web开发的或多或少的了解Jquery,但我们是否真的熟悉Jquery呢?我想大家都使用过Jquery的$.ajax()去进行过异步操作,但我们又是否了解$.ajax()能异步操作是和Deferred对象有关呢?Deferred对象有三个状态:失败,成功,正在进程中。如果Deferred的状态为成功的话,执行done方法;如果Deferred的状态为失败的话,执行fail方法

var get=function(){    var dfd=$.Deferred();    var i=1;//这个i可能从别处获得,这里假设是1    if(i==1){       dfd.resolve();//resolve说明get方法成功了了    }else{       dfd.reject(); //reject说明get方法失败了    }    return dfd;}
get().done(function(){    //如果get方法成功,执行这里的代码}).fail(function(){    //如果get方法失败,执行这里的代码});
Deferred对象可以让JavaScript链式开发,还有很多其他的库和Jquery的Deferred对象的用法相似,比如NodeJS有一个叫做Q的库。

   

    3.观察者模式

    Jquery的事件绑定on和事件触发trigger就类似观察者模式,可以很好的完成异步操作。

    如果要使用JavaScript原生实现这个过程,请参考http://blog.csdn.net/zhoulu001/article/details/52874081



  

0 0
原创粉丝点击