zoukankan      html  css  js  c++  java
  • jquery Deferred对象

    <script>
    function f1(){
        var D = $.Deferred();
        setTimeout(
            function(){
                alert("yaha!");
                //D.resolve(); // 改变deferred对象的运行状态为"已完成",立即触发done
                D.reject(); // 改变deferred对象的运行状态为"未完成",立即触发fail
            },2000
        );
        return D.promise();    
    }
    function f2(){
        var D = $.Deferred();
        setTimeout(
            function(){
                alert("yaha!");
                D.resolve();
                D.reject();
            },5000
        );
        return D.promise();    
    }
    
    $.when(f1(),f2())
    .done(function(){alert('done!');})
    .fail(function(){alert('fail!');});
    </script>

    开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。

    通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。

    但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQuery开发团队就设计了Deferred对象(1.5版本)。

    简单说,deferred对象就是jQuery的回调函数解决方案。

  • 相关阅读:
    Redis集群搭建&访问
    Redis集群功能概述
    Redis多机功能之Sentinel
    Redis单机版安装与部署
    Redis多机功能之复制
    Redis多机功能介绍
    Hadoop JobHistory
    Hive基础之COALESCE用法
    junit组合模式应用
    Emmet
  • 原文地址:https://www.cnblogs.com/sooj/p/3126691.html
Copyright © 2011-2022 走看看