$.Mutex()怎么用,用来干嘛?

$.Mutex = (function() {
function Mutex() {
this.def = $.Deferred().resolve();
}
Mutex.prototype.exec = function(action) {
var current = this.def;
var next = this.def = $.Deferred();
return current.then(function() {
return $.when(action()).always(function() {
next.resolve();
});
});
};
return Mutex;
})();

慕丝7291255
浏览 76回答 2
2回答

潇潇雨雨

Deffered的作用: 在没有这个对象之前,想要将异步的操作变为同步的,只能使用回调函数.这样的话代码的可维护性可读性会大大降低.$.Deferred().resolve()是标记当前函数执行结束,$.when(defer1,defer2).then(funcCallback)表示当前的funcCallback要等defer1,defer2执行结束(即每个deffered对象都用resolve标记)之后再执行,跟defer1和defer2谁先执行谁后执行没有关系.用法:$.Mutex.exec(defer1,defer1); 作用:使用Mutex使defer1,defer2只执行一次,相当于单例

摇曳的蔷薇

顺序处理耗时的Deferred操作,比如有四个耗时的方法func1,func2,func3,func4$.Mutex.exec(func1);$.Mutex.exec(func2);$.Mutex.exec(func3);$.Mutex.exec(func4);这四个方法就会顺序执行
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery