一、介绍

jQuery1.5开始引入Deferred对象,是一种”延时”方法,类似于promise。它可以将多个回调注册到回调队列中,调用回调队列,并触发任何同步或异步函数的成功或失败状态。

官方介绍地址:https://api.jquery.com/category/deferred-object/

二、具体方法介绍

1、var deferred =$.Deferred()

生成一个deferred对象

2、deferred.done()

指定操作成功时的回调函数

3、deferred.fail()

指定操作失败时的回调函数

4、deferred.promise()

返回一个新的deferred对象,该对象的运行状态无法被改变

5、deferred.resolve()

改变deferred对象的运行状态为”已完成”,立即触发done()方法。

6、deferred.reject()

改变deferred对象的运行状态为”已失败”,立即触发fail()方法。

7、deferred.then()

把done()和fail()合在一起写

8、deferred.always()

不管调用的是deferred.resolve()还是deferred.reject(),最后总是执行

三、使用方式

<script>

var tty=$.Deferred();

console.log(tty);

var tty2=tty.promise();

tty2.always(function (v) {

console.log(“tty2 always “+v);

});

tty.fail(function (value) {

console.log(“fail “+value);

});

tty.done(function (value) {

console.log(“done”+value);

});

tty.always(function (value) {

console.log(“always “+value)

});

tty.then(function (value) {

console.log(“then “+value);

},function (reason) {

console.log(“then “+reason);

});

setTimeout(function () {

tty.reject(“fail”);

tty.resolve(“success”);

},3000);

</script>


发表评论

邮箱地址不会被公开。 必填项已用*标注