$.Deferred(),js异步,简化代码

$.Deferred() 为了解决js中需要很多异步的方法需要一个个回掉时,使用的东西。

这个东西我只使用过一次,也并没有完全理解,后续再补充吧,要想知道详细的话就去看看 阮一峰的讲解吧,挺详细的

定义一个方法:

function zhc_test(xxx){
var H = $.Deferred();
.
.   省略过程
.
   if(success){
H.reject();//改变Deferred的状态表示已执行完成
    }  else{
        H.reject();//和上面一样
    }
return H.promise();//最后return掉就行了
}

上面是创建一个方法,下面是调用:

zhc_test(xxxx).done(function (a) {
        xxxxx
    }).fail(function () {
        xxxx
    });

也就是说$.Deferred()这个玩意可以标注出某个方法的执行状态,而不用将一堆的东西写在同一个方法里,比如在同一个方法中进行了两次ajax请求,当然可以进行同步操作,但需要进行异步的时候,由于ajax的异步,并不能保证两个ajax是否同时完成甚至确保它的执行先后顺序时就用到它了。

你可能感兴趣的:(JS/jquery)