在单例类构造函数中进行 Ajax 调用

Posted

技术标签:

【中文标题】在单例类构造函数中进行 Ajax 调用【英文标题】:Making an Ajax call inside a singleton class constructor 【发布时间】:2014-01-15 03:30:57 【问题描述】:

使用 Sencha Touch,我在其构造函数中定义了一个带有 Ajax 调用的单例类。当我的应用程序启动时,我收到错误消息:Cannot call method 'request' of undefined 从带有“Ext.Ajax.request”的行中调用。

如果我在构造函数中删除 Ajax 调用,我的应用程序将加载而不会出现任何错误。

然后,如果我在我的应用程序启动后调用的另一个函数中进行 Ajax 调用,它就可以工作。所以我假设调用构造函数时 Ext.Ajax 尚未加载。我尝试将 uses 参数添加到我的类,但它不起作用。

Ext.define('MyApp.utils.PostalCode', 
    singleton: true,
    config : 
        postalCodesHashMap : null,  
    ,  
    uses : 'Ext.Ajax',
    constructor: function(config) 
        this.initConfig(config);
        Ext.Ajax.request(
            //will not work        
        ); 
    ,  
    loadData : function() 
        Ext.Ajax.request(
            //will work             
        ); 
    
);

【问题讨论】:

@jprofitt :它有效,谢谢!你可以做一个答案,我会选择它作为正确答案。 【参考方案1】:

您应该使用requires 来指示在创建此类之前需要Ext.Ajax,而不是使用uses

requires: ['Ext.Ajax']

可能发生的情况是,在此过程中需要Ext.Ajax,因此loadData() 请求可以访问它,而无需MyApp.utils.PostalCode 明确要求首先加载它。

【讨论】:

以上是关于在单例类构造函数中进行 Ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章

使用python中的构造函数限制在单例类中创建对象

Dart类(构造函数、单例)

单例模式

单例类的总结

扎实基础_设计模式_结构型_单例模式

9种Java单例模式详解(推荐)