我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Jquery回调对象与延迟对象怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Jquery回调对象与延迟对象怎么使用

这篇文章主要介绍“Jquery回调对象与延迟对象怎么使用”,在日常操作中,相信很多人在Jquery回调对象与延迟对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jquery回调对象与延迟对象怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、回调对象Callbacks

jQuery 1.7 版本中新增的 jQuery.Callbacks() 函数,返回一个多功能对象,此对象提供了一种强大的方法来管理回调列表。它能够增加、删除、触发、禁用回调函数。

1、定义和用法

$.Callbacks() 指一个多用途的回调函数列表对象,提供了一种强大的方法来管理回调函数列对。

提示: $.Callbacks 是在 jQuery 内部使用,如为 .ajax,$.Deferred 等组件提供基础功能的函数。它也可以用在类似功能的一些组件中,如自己开发的插件。

$(function () {     function fn1( value ) {        alert( value );    }    function fn2( value ) {        fn1("fn2 says: " + value);        return false;    }    var callbacks = $.Callbacks();    callbacks.add( fn1 );        callbacks.fire( "foo!" );// 输出: foo!        callbacks.add( fn2 );    callbacks.fire( "bar!" );// 先执行f1,再执行f2。输出: bar!, fn2 says: bar!})

2、支持的 Flags 参数

这个 flags 参数是 $.Callbacks() 的一个可选参数, 结构为一个用空格标记分隔的标志可选列表,用来改变回调列表中的行为 (比如. $.Callbacks( 'unique stopOnFalse' ))。 
以下是可用的 flags:

  • once:确保这个回调列表只执行一次

  • memory:缓存上一次fire时的参数值,当add()添加回调函数时,直接用上一次的参数值立刻调用新加入的回调函数

  • unique:一个回调只会被添加一次,不会重复添加

  • stopOnFalse:某个回调函数返回false之后中断后面的回调函数

下面是 $.Callbacks( "unique" ) 的一个例子

$(function () {     function fn1( value ) {        alert( value );    }    function fn2( value ) {        fn1("fn2 says: " + value);        return false;    }    var callbacks = $.Callbacks( "unique" );    callbacks.add( fn1 );    callbacks.fire( "foo" );    callbacks.add( fn1 ); // repeat addition    callbacks.add( fn2 );    callbacks.fire( "bar" );    callbacks.remove( fn2 );    callbacks.fire( "foobar" );    })

$.Callbacks() 支持一个列表设置多个flags(标识)而不仅仅是一个,有一个累积效应,类似"&&"。 
下面是 $.Callbacks( 'unique memory' ) 的一个例子

$(function () {     function fn1( value ) {        alert( value );        return false;    }         function fn2( value ) {        fn1( "fn2 says: " + value );        return false;    }     var callbacks = $.Callbacks( "unique memory" );    callbacks.add( fn1 );    callbacks.fire( "foo" );    callbacks.add( fn1 ); // repeat addition    callbacks.add( fn2 );    callbacks.fire( "bar" );    callbacks.add( fn2 );    callbacks.fire( "baz" );    callbacks.remove( fn2 );    callbacks.fire( "foobar" );     })

3、方法清单:

  • callbacks.add():回调列表中添加一个回调或回调的集合。

  • callbacks.disable():禁用回调列表中的回调

  • callbacks.disabled():确定回调列表是否已被禁用。

  • callbacks.empty():从列表中删除所有的回调.

  • callbacks.fire():用给定的参数调用所有的回调

  • callbacks.fired():访问给定的上下文和参数列表中的所有回调。

  • callbacks.fireWith():访问给定的上下文和参数列表中的所有回调。

  • callbacks.has():确定列表中是否提供一个回调

  • callbacks.lock():锁定当前状态的回调列表。

  • callbacks.locked():确定回调列表是否已被锁定。

  • callbacks.remove():从回调列表中的删除一个回调或回调集合。

二、延迟对象:deferred

在jQuery 1.5中新增了 Deferred 延迟对象,它是通过调用 jQuery.Deferred() 方法来创建的可链接的实用对象。它可注册多个回调函数到回调列表,调用回调列表并且传递异步或同步功能的成功或失败的状态。 
延迟对象是可链接的,类似于一个 jQuery 对象可链接的方式,区别于它有自己的方法。在创建一个 Deferred 对象之后,您可以使用以下任何方法,直接链接到通过调用一个或多个的方法创建或保存的对象。

1、$.Deferred()定义和用法

$.Deferred() 是一个构造函数,用来返回一个链式实用对象方法来注册多个回调,并且调用回调队列,传递任何同步或异步功能成功或失败的状态。

  • $.Deferred() 构造函数创建一个新的 Deferred(延迟)对象, jQuery.Deferred 可传递一个可选的函数,该函数在构造方法返回之前被调用并传递一个新的 Deferred 对象作为函数的第一个参数。例如被调用的函数可以使用 deferred.then()来附加回调函数。

  • 一个 Deferred 对象开始于挂起状态。任何使用 deferred.then(), deferred.always(), deferred.done(), 或者 deferred.fail() 添加到这个对象的回调函数都是排队等待执行的。调用 deferred.resolve() 或 eferred.resolveWith() 转换延迟到解决状态后立即执行设置的 doneCallbacks 。调用 deferred.reject() 或 deferred.rejectWith() 转换延迟到拒绝状态后立即执行设置的 failCallbacks 。一旦对象已经进入了解决或拒绝状态,它保持该状态。回调仍然可以添加到已解决或已拒绝的 Deferred 对象——它们会立即执行。

设定两个延时时间是随机的定时器,分别用于解决(resolve)和拒绝(reject)延迟对象

$(function () {     function asyncEvent(){        var dfd = new jQuery.Deferred();        // 在一个随机的时间间隔之后 Resolve (解决状态)        setTimeout(function(){            dfd.resolve("欢呼");        }, Math.floor(400+Math.random()*2000));        // 在一个随机的时间间隔之后 reject (拒绝状态)        setTimeout(function(){            dfd.reject("对不起");        }, Math.floor(400+Math.random()*2000));        // 每半秒显示一个"working..."消息        setTimeout(function working(){            if ( dfd.state() === "pending" ) {                dfd.notify("working... ");                setTimeout(working, 500);            }        }, 1);        // 返回 Promise 对象,调用者不能改变延迟对象        return dfd.promise();    }    // 为异步函数附加一个done, fail, 和 progress 处理程序    $.when( asyncEvent() ).then(        function(status){            alert( status+', 事情进展顺利' );        },        function(status){            alert( status+', 这次你失败了' );        },        function(status){            $("body").append(status);        }    );})

2、deferred.promise():

返回Deferred(延迟)的Promise对象。

  • 方法允许一个异步函数阻止那些干涉其内部请求的进度(progress)或状态(status)的其它代码。

  • 只包含 deferred 对象的一组方法,包括:done(),then(),fail(),isResolved(), isRejected(), always(), 这些方法只能观察一个 deferred 的状态,而无法更改 deferred 对象的内在状态。

  • deferred.promise()也可以接受一个 target 参数,此时传入的 target 将被赋予 Promise 的方法,并作为结果返回,而不是创建一个新对象。 
    deferred.promise( [target ] ) :使用目标参数

3、.promise():

返回一个 Promise 对象用来观察当某种类型的所有行动绑定到集合,排队与否还是已经完成。

  • .promise() 方法返回一个动态生成的 Promise,当绑定到集合中的所有特定动作(action)已经被加入或未被加入到队列中时,生成的 Promise 将被受理(resolve)。

  • type 的默认值是"fx" ,这意味着被受理(resolve)的 Promise 对象是在所有被选中元素的动画都完成时返回的。

  • 如果提供 target 参数,.promise() 在该参数上添加方法,然后返回这个对象,而不是创建一个新的。它适用于在一个已经存在的对象上添加 Promise 行为的情况。

语法:.promise( [type ] [, target ] )

type:String类型 需要待观察队列类型。

target:PlainObject类型 将要绑定 promise 方法的对象。

在一个没有激活动画的集合上调用 .promise()

$(function () {     var div = $( "" );    div.promise().done(function( arg1 ) {        alert( this === div && arg1 === div );//弹出 "true"    });})

当所有的动画结束时(包括那些在动画回调函数和之后添加的回调函数中初始化的动画),受理(Resolve)返回的 Promise。

$(function () {     $( "button" ).on( "click", function() {        $( "p" ).append( "已开始..." );        $( "div" ).each(function( i ) {            $( this ).fadeIn().fadeOut( 100 * ( i + 1 ) );        });        $( "div" ).promise().done(function() {            $( "p" ).append( " 完成! " );        });    });})

4、jQuery.when():

提供一种方法来执行一个或多个对象的回调函数, Deferred(延迟)对象通常表示异步事件。

5、方法清单:

  • deferred.progress():当Deferred(延迟)对象生成进度通知时,调用添加处理程序。

  • deferred.done():当Deferred(延迟)对象解决时,调用添加处理程序。

  • deferred.fail():当Deferred(延迟)对象拒绝时,调用添加处理程序。

  • deferred.always():当Deferred(延迟)对象解决或拒绝时,调用添加处理程序。

  • deferred.catch():当Deferred对象被拒绝(reject)时,调用添加的处理程序。

  • deferred.notify():根据给定的 args参数 调用Deferred(延迟)对象上进行中的回调 (progressCallbacks)。

  • deferred.notifyWith():根据给定的上下文(context)和args递延调用Deferred(延迟)对象上进行中的回调(progressCallbacks )。

  • deferred.resolve():解决Deferred(延迟)对象,并根据给定的args参数调用任何完成回调函数(doneCallbacks)。

  • deferred.resolveWith():解决Deferred(延迟)对象,并根据给定的 context和args参数调用任何完成回调函数(doneCallbacks)。

  • deferred.reject():拒绝Deferred(延迟)对象,并根据给定的args参数调用任何失败回调函数(failCallbacks)。

  • deferred.rejectWith():拒绝Deferred(延迟)对象,并根据给定的 context和args参数调用任何失败回调函数(failCallbacks)。

  • deferred.pipe():实用的方法来过滤 and/or 链Deferreds。

  • deferred.state():确定一个Deferred(延迟)对象的当前状态。

  • deferred.then():当Deferred(延迟)对象解决,拒绝或仍在进行中时,调用添加处理程序。

到此,关于“Jquery回调对象与延迟对象怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Jquery回调对象与延迟对象怎么使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Jquery回调对象与延迟对象怎么使用

这篇文章主要介绍“Jquery回调对象与延迟对象怎么使用”,在日常操作中,相信很多人在Jquery回调对象与延迟对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jquery回调对象与延迟对象怎么使用
2023-06-30

jquery延迟对象怎么使用

这篇文章主要介绍“jquery延迟对象怎么使用”,在日常操作中,相信很多人在jquery延迟对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jquery延迟对象怎么使用”的疑惑有所帮助!接下来,请跟
2023-07-04

jquery延迟对象是什么

jquery延迟对象是“Deferred”,是通过调用jQuery.Deferred()方法来创建的可链接的实用对象。延迟对象是可链接的,类似于一个jQuery对象可链接的方式,区别于它有自己的方法;它可注册多个回调函数到回调列表,调用回调列表并且传递异步或同步功能的成功或失败的状态。
2022-11-22

怎么将JS对象与jQuery对象进行相互转换

这篇文章主要介绍了怎么将JS对象与jQuery对象进行相互转换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.jQuery对象转换为JS原生对象
    2023-06-14

    Springboot JPA怎么使用distinct返回对象

    这篇文章主要讲解了“Springboot JPA怎么使用distinct返回对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Springboot JPA怎么使用distinct返回对象”吧
    2023-06-29

    jquery中math对象的方法怎么使用

    今天小编给大家分享一下jquery中math对象的方法怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。math对象的方
    2023-07-05

    C#中怎么调用Excel对象

    本篇文章给大家分享的是有关C#中怎么调用Excel对象,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#调用Excel对象微软的Excel对象模型包括了128个不同的对象,从矩
    2023-06-17

    VBS中怎么调用CAPICOM对象

    VBS中怎么调用CAPICOM对象,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 代码如下:Const CAPICOM_HASH_ALGORITHM_MD2 = 1 Con
    2023-06-08

    C++函数对象怎么调用

    这篇文章主要介绍了C++函数对象怎么调用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++函数对象怎么调用文章都会有所收获,下面我们一起来看看吧。一、客户需求编写一个函数函数可以获得斐波那契数列每项的值每调用
    2023-06-30

    Python面向对象的类和对象怎么使用

    这篇文章主要介绍“Python面向对象的类和对象怎么使用”,在日常操作中,相信很多人在Python面向对象的类和对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python面向对象的类和对象怎么使用
    2023-06-22

    response对象怎么使用

    在Python中,response对象是对HTTP响应的封装。你可以使用以下步骤来使用response对象:1. 导入需要的模块:```pythonimport requests```2. 发送HTTP请求并获取response对象:```
    2023-08-18

    怎么在jQuery中使用$.extend深拷贝对象

    这篇文章主要介绍“怎么在jQuery中使用$.extend深拷贝对象”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么在jQuery中使用$.extend深拷贝对象”文章能帮助大家解决问题。语法:j
    2023-06-17

    Java中JSP的pageContext对象和page对象怎么使用

    这篇文章主要讲解了“Java中JSP的pageContext对象和page对象怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中JSP的pageContext对象和page对象
    2023-07-05

    java怎么回收无用类对象

    Java的垃圾回收机制会自动回收无用的类对象,无需手动介入。Java的垃圾回收器会定期扫描程序中的对象,当发现某个对象没有任何引用指向它时,就会将其标记为待回收状态。之后,垃圾回收器会在适当的时机回收这些无用的对象,释放它们占用的内存空间。
    2023-10-27

    Java中JSP的session对象和config对象怎么使用

    本篇内容主要讲解“Java中JSP的session对象和config对象怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中JSP的session对象和config对象怎么使用”吧!
    2023-07-04

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录