jQuery Deferred 对象是一个强大的工具,它可以帮助我们更好地管理异步代码。它可以让我们更容易地处理异步函数的返回值,并且可以让我们更好地处理多个异步函数之间的依赖关系。
jQuery Deferred 对象有三种状态:未完成(pending)、已完成(resolved)和已失败(rejected)。当一个 Deferred 对象进入未完成状态时,它会创建一个 Promise 对象来保存当前的状态。Promise 对象可以用来注册回调函数来监听 Deferred 对象的状态变化。
// 使用 jQuery 的 Deferred 来创建一个 Promise 对象 var promise = $.Deferred(); // 注册回调函数来监听 Deferred 的状态变化 promise.done(function(data) { // resolved 状态时执行的回调函数 console.log('Promise resolved with data: ' + data); }).fail(function(error) { // rejected 状态时执行的回调函数 console.log('Promise rejected with error: ' + error); });
jQuery Deferred 还提供了一些方法来帮助我们控制异步代码之间的依赖关系。例如,如果你想要在一个异步函数执行完之后再执行另一个异步函数,你可以使用 jQuery 的 when() 方法来将这两个异步函数封装在一个新的 Promise 对象中。
// 声明需要执行的异步函数 var asyncFunc1 = function() { return $.ajax({ url: '/some/url' }); }; var asyncFunc2 = function() { return $.ajax({ url: '/some/other/url' }); }; // 使用 when() 方法将这些异步函數封装在一個新的 Promise 对象中 var promise = $.when(asyncFunc1(), asyncFunc2()); // 注冊回調函數監視 Promise 狀態的改動 promise.done(function(data1, data2) { console.log('asyncFunc1 returned data: ' + data1); console.log('asyncFunc2 returned data: ' + data2); });
总之,jQuery Deferred 是一个非常有用而又方便易用的工具。它能够帮助我们更好地处理异步代码、处理多个异步函數之间的依存關係、監視 Promise 狀態的改動、并能够根据不同情况采取不同行動。
jQuery 杂项方法
当用户点击按钮时,受理延迟对象,触发一系列回调函数
deferred.done() 函数当Deferred(延迟)对象被受理时,调用添加的处理程序。
提示:该方法接受一个或者多个参数。deferred.done() 返回的是一个 Deferred 对象,可以连接其他的延迟对象方法,包括额外的 .done() 方法。当Deferred 对象得到解决时,回调函数按它们被添加时的顺序执行,并且可以作为参数传递给如下的方法使用:resolve,resolveWith。
参数 | 描述 |
---|---|
doneCallbacks | Function类型 一个函数或者函数数组,当Deferred(延迟)对象得到解决时被调用 |
doneCallbacks | 可选。Function类型 一个函数或者函数数组,当Deferred(延迟)对象得到解决时被调用 |
jQuery 杂项方法
jQuery.map()方法jQuery 杂项方法实例使用$.map() 修改一个数组的值 div/divp/pspan/spanscript$(function () {var arr = [ a, b...
提供完整的 jQuery 参考手册以及大量的在线实例。jQuery 参考手册在 ,您将找到包含所有 jQuery 对象和函数的完整参考手册:选择...
jQuery 是一个 JavaScript 库。jQuery 极大地简化了 JavaScript 编程。jQuery 很容易学习。本章节的每一篇都包含了在线实例通过...
jQuery 库可以通过一行简单的标记被添加到网页中。 您需要具备的基础知识在您开始学习 jQuery 之前,您应该对以下知识有基本的了...
CSS3 text-shadow 属性实例基本文字阴影(text-shadow):h1{text-shadow: 2px 2px #ff0000;}在此页底部有更多的例子。浏览器支...