jQuery.deferred对象使用详解

2020-05-29 07:04:44易采站长站整理

(16)deferred.pipe() — 从jQuery 1.8开始被弃用。

4.什么情况下使用deferred对象和Promises?
上面讲了很多,那么我们究竟在什么情况下使用Deferred对象和Promises对象呢?

(1)复杂的动画

不知道动画什么时候结束,但是又必须在动画结束的时候做一些操作或者是启动其他的动画,这种情况下,如果采用其他的方式,很容易导致代码可读性差,尤其是还夹带着一些其它的操作,比如渲染、表单操作等,现在jQuery会为你的动画操作返回一个Promise,这样这些动画可以进行链式操作。

(2)处理队列

window.queue = $.when() $(‘#list’).on(‘click’, function() { window.queue = window.queue.then(function() { //do the thing }) } )
(3)The Wait promise


function wait(ms) {
var deferred = $.Deferred();
setTimeout(function(){deferred.resolve()}, ms);
return deferred.promise();
}

wait(1500).then(function () {
// After 1500ms this will be executed
});

(4)典型的Ajax操作


$.when($.ajax({}), $.ajax({}))
  .done(function(){ alert("success!"); })
  .fail(function(){ alert("error!"); });

(5)一些耗时的大循环操作