举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > jquery deferred jQuery deferred.done() 方法

jquery deferred jQuery deferred.done() 方法

2023-06-21 02:18 jQuery教程

jquery deferred jQuery deferred.done() 方法

jquery deferred

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() 方法

jQuery deferred.done() 方法

jQuery 杂项方法jQuery 杂项方法

实例

当用户点击按钮时,受理延迟对象,触发一系列回调函数

<button>Go</button>
<
p>准备...</p>
<
script>
$
(function () {
   
// 当Deferred对象被解决时,3个函数被调用
    function
fn1() {
        $
( "p" ).append( " 1 " );
    }

    function
fn2() {
        $
( "p" ).append( " 2 " );
   
}
    function
fn3( n ) {
        $
( "p" ).append( n + " 3 " + n ); }
    //
创建一个deferred对象
    var
dfd = $.Deferred();
    //
添加当dfd解决时被调用的处理程序
    dfd

   
// .done() 可以获取函数或函数数组的数量
        .
done( [ fn1, fn2 ], fn3, [ fn2, fn1 ] )
    //
我们也可以连接其他的方法
        .
done(function( n ) {
            $
( "p" ).append( n + " 已完成。" );
       }
);
    //
当按钮被点击时修改状态为已完成
    $
( "button" ).on( "click", function() {
       
dfd.resolve( "" );
    }
);
}
)
</
script>


定义和用法

deferred.done() 函数当Deferred(延迟)对象被受理时,调用添加的处理程序。
提示:该方法接受一个或者多个参数。deferred.done() 返回的是一个 Deferred 对象,可以连接其他的延迟对象方法,包括额外的 .done() 方法。当Deferred 对象得到解决时,回调函数按它们被添加时的顺序执行,并且可以作为参数传递给如下的方法使用:resolve,resolveWith。


语法

deferred.done( doneCallbacks [, doneCallbacks ] )

参数 描述
doneCallbacks Function类型 一个函数或者函数数组,当Deferred(延迟)对象得到解决时被调用
doneCallbacks 可选。Function类型 一个函数或者函数数组,当Deferred(延迟)对象得到解决时被调用


jQuery 杂项方法jQuery 杂项方法

阅读全文
以上是编程学为你收集整理的jquery deferred jQuery deferred.done() 方法全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部