jQuery中Deferred的使用
一、介绍
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>