摘要:不就是链式调用嘛,有何优点优点一可以清晰指定多个回调函数试想一下,如果用以前的编程模式,只能这么写优点二为多个操作指定回调函数用传统的编程模式,只能重复写等回调了。
在开发的过程,经常会遇到一些耗时间的操作,比如ajax读取服务器数据(异步操作),遍历一个很大的数组(同步操作)。不管是异步操作,还是同步操作,总之就是不能立即得到结果,JS是单线程语音,不能立即得到结果,便会一直等待(阻塞)。
一般的做法就是用回调函数(callback),即事先定义好一个函数,JS引擎不等待这些耗时的操作,而是继续执行下面的代码,等这些耗时操作结束后,回来执行事先定义好的那个函数。如下面的ajax代码:
$.ajax({ url: "test.html", success: function(){ console.log("success"); }, error: function(){ console.log("error"); } });
但这样写不够强大灵活,也很啰嗦。为此,jQuery1.5版本引入Deferred功能,为处理事件回调提供了更加强大而灵活的编程模式。
$.ajax("test.html") .done( function(){ console.log("success"); } ) .fail( function(){ console.log("error"); } );
不就是链式调用嘛,有何优点?
优点一:可以清晰指定多个回调函数
function fnA(){...} function fnB(){...} $.ajax("test.html").done(fnA).done(fnB);
试想一下,如果用以前的编程模式,只能这么写:
function fnA(){...} function fnB(){...} $.ajax({ url: "test.html", success: function(){ fnA(); fnB(); } });
优点二:为多个操作指定回调函数
$.when($.ajax("test1.html"), $.ajax("test2.html")) .done(function(){console.log("success");}) .fail(function(){console.log("error");});
用传统的编程模式,只能重复写success,error等回调了。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/78248.html
摘要:中文文档简单说,对象就是的回调函数解决方案。为了让回调函数的名字统一,便于在中使用。普通操作的回调函数接口对象的最大优点,就是它把这一套回调函数接口,从操作扩展到了所有操作。指定操作成功时的回调函数。 参考链接 jQuery API中文文档 jQuery.Deferred jQuery.when jQuery的deferred对象详解 jQuery deferred 对象的 prom...
摘要:上篇文章中讲到,使用的方法操作请求,会受到回调函数嵌套的问题。第一次回调第二次回调内部实现上,和都是基于实现的对于多个同时请求,共同执行同一个回调函数这一点上,有一个方法,接受多个对象实例,同时执行。 上篇文章中讲到,使用jquery的ajax方法操作ajax请求,会受到回调函数嵌套的问题。当然,jquery团队也发现了这个问题,在2011年,也就是jquery 1.5版本之后,jQu...
摘要:通常的做法是,为它们指定回调函数。简单说,对象就是的回调函数解决方案。指定操作成功时的回调函数指定操作失败时的回调函数没有参数时,返回一个新的对象,该对象的运行状态无法被改变接受参数时,作用为在参数对象上部署接口。 转自:阮一峰:http://www.ruanyifeng.com/blo... 一、什么是deferred对象?开发网站的过程中,我们经常遇到某些耗时很长的javascri...
摘要:通常的做法是,为它们指定回调函数。指定操作成功时的回调函数指定操作失败时的回调函数没有参数时,返回一个新的对象,该对象的运行状态无法被改变接受参数时,作用为在参数对象上部署接口。 jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本。 每个版本都会引入一些新功能。今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能----deferred对象。 这个功...
摘要:给普通的操作指定回调函数对象的最大优点,就是它把这一套回调函数接口,从操作扩展到了所有操作。方法用于指定对象状态为已失败时的回调函数。执行完毕执行成功执行失败接收一个或多个对象作为参数,为其指定回调函数。 什么是deferred对象 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型...
阅读 1434·2021-09-22 15:43
阅读 2150·2019-08-30 15:54
阅读 1151·2019-08-30 10:51
阅读 2078·2019-08-29 18:35
阅读 423·2019-08-26 11:58
阅读 2472·2019-08-26 11:38
阅读 2428·2019-08-23 18:35
阅读 3623·2019-08-23 18:33