jQuery when 是一个强大的工具,它可以帮助我们处理异步操作,并确保在所有异步操作完成后执行回调函数。它可以让我们在多个异步操作之间建立依赖关系,并确保在所有依赖的异步操作都完成后再执行回调函数。
jQuery when 可以帮助我们处理多个异步操作,而不必使用回调函数嵌套。它可以将多个 Deferred 对象封装到一个 Deferred 对象中,并在所有 Deferred 对象都完成时执行回调函数。
$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ) .done(function( page1, page2 ) { // page1 and page2 are arguments resolved for the page1 and page2 ajax requests, respectively. // Each argument is an array with the following structure: [ data, statusText, jqXHR ] });
jQuery 杂项方法
一个参数传递给 $.when() 被受理,执行回调函数
$.when() 函数提供一种方法来执行一个或多个对象的回调函数。
提示:如果向 jQuery.when 传入一个延迟对象,那么会返回它的 Promise 对象(延迟方法的一个子集)。可以继续绑定 Promise 对象的其它方法,例如, defered.then 。当延迟对象已经被受理(resolved)或被拒绝(rejected)(通常是由创建延迟对象的最初代码执行的),那么就会调用相应的回调函数。
参数 | 描述 |
---|---|
deferreds | Deferred类型 一个或多个延迟对象,或者普通的JavaScript对象 |
如果你不传递任何参数,jQuery.when()将返回一个resolved(受理)状态的 promise 对象。
不传递任何参数,执行回调函数
在多个延迟对象传递给jQuery.when() 的情况下,该方法返回一个新的"宿主"延迟对象,当所有的延迟对象被受理(resolve)时,该方法才会受理它的宿主延迟对象。当其中有一个延迟对象被拒绝(rejected)时,该方法就会拒绝它的宿主延迟对象。当宿主对象被受理时,doneCallbacks(受理回调)将被执行。
传入多个延迟对象
如果没有值传递给延迟对象的受理(resolved)事件,那么相应的doneCallback参数将是undefined。 如果传递给延迟对象的受理(resolved)事件为单个的值, 相应的参数将保留那个值。 在传递给延迟对象的解决(resolved)事件为为多个值的情况下, 相应的参数将是这些值组成的数组。
传入多个不同类型的延迟对象
在多个延迟的情况下,如果延迟对象之一被拒绝(rejected),jQuery.when()触发立即调用 "宿主" 延迟对象的 failCallbacks 回调函数。
多个延迟对象之一被拒绝时调用failCallbacks 回调函数
jQuery 杂项方法
jQuery deferred.then() 方法jQuery 杂项方法实例添加 .then 方法 $(function () {$.get(test.php).then( function(){ alert($.g...
jQuery.makeArray()方法jQuery 杂项方法实例将一个HTML元素集合转换成对应的数组 $(function () {var elems = document.getEleme...
jQuery focus() 方法jQuery 事件方法实例 添加函数到 focus 事件。当 input 字段获得焦点时发生 focus 事件:$("input").focus(f...
jQuery mouseenter() 方法jQuery 事件方法实例 当鼠标指针进入 p 元素时,设置背景色为黄色:$("p").mouseenter(function(){ $("...
jQuery 库拥有完整的 AJAX 兼容套件。 jQuery AJAX 方法列表 AJAX 是一种与服务器交换数据的技术,可以在补充在整个页面的情况下...