zoukankan      html  css  js  c++  java
  • jQuery的deferred对象状态还原

    jQuery的deferred对象的使用可以参考阮一峰的jQuery的deferred对象详解

    -----------------------------------------------------------------------------------------------------------------------------

    js模块化开发时用到requirejs加载js,有两个模块A和B,require(A),require(B),B依赖A,B中要使用A中异步从后台加载的数据,想到了jQuery的deferred对象,A中返回一个deferred对象defer,等到A中加载完后defer.resolve(data),B中defer.done(function(data){})

    app.js

    requirejs(['jquery'],function($){
            var a=require(A) ;
            var b=require(B) ;
    
      $("#query").off('click').on('click', function () {
            var a=require(A) ;
            var b=require(B) ;
          });
    
    })            

    A.js

    define(['jquery'],function ($) {
        var defer=$.Deferred();
        $.ajax({
            url:"",
            success:function(data){
                defer.resovle(data)
            }     
        })
        return defer
    })    

    B.js

    define(['jquery','A'],function ($,defer) {
        defer.done(function(data){
         //...   
        })
    }) 

    这样之后,第一次加载没问题。会加载A.js,B.js 但是查询的时候不会加载A.js,B.js,A中的ajax会执行,但是B中defer对象的状态已改变,获取不到A中的数据,因此修改为如下

    A.js

    define(['jquery'],function ($) {
        var defer=$.Deferred();
        $.ajax({
            url:"",
            success:function(data){
                defer.resovle(data)
            }     
        })
        return function(g){
            if(g!=undefined){
                defer= g;
            }
            else{
                return defer;
            }
         }
                    
    })    

    B.js

    define(['jquery','A'],function ($,defer) {
        defer().done(function(data){
             //...   
           defer($.Deferred());
            
        })
    })

    B中每次用完给一个新的对象,让A中的defer指向新对象,巧妙改变defer状态。

    Computers are a sadness,I am the cure.
  • 相关阅读:
    unable to retrieve container logs for docker kubernetes
    Restart container within pod
    Kubernetes1.3:POD生命周期管理
    Options of the DB storage of prometheus
    prometheus重启hang住问题记录
    prometheus交流资源
    nc 从服务器上传下载文件
    负载均衡监控需求
    prometheus消耗内存问题
    10.Docker 镜像使用
  • 原文地址:https://www.cnblogs.com/anxiong/p/13229091.html
Copyright © 2011-2022 走看看