Javascript OOP构造函数使用ajax初始化数据-原型中不可用

Javascript OOP构造函数使用ajax初始化数据-原型中不可用,javascript,jquery,ajax,oop,Javascript,Jquery,Ajax,Oop,我在实现javascript类时遇到了一个问题,该类的构造函数由ajax调用填充。从文件中读取数据,并以异步方式正确填充类属性。以下代码可以正常工作: function Pattern(file){ this.pattern = new Array(); $.ajax({ type: 'GET', url: file, dataType: 'text', context: this, succes

我在实现javascript类时遇到了一个问题,该类的构造函数由ajax调用填充。从文件中读取数据,并以异步方式正确填充类属性。以下代码可以正常工作:

function Pattern(file){

    this.pattern = new Array();

    $.ajax({
        type: 'GET',
        url: file,
        dataType: 'text',
        context: this,
        success: function (data){
            ...
            this.buildPattern(data);
        },
        error: function (jqXHR, textStatus, errorThrown){
                alert('Problem loading file \'' + file + '\'');
        }
    });
}

Pattern.prototype.buildPattern = function(pattern){
    do{
        ...
        this.pattern[i][j] = pattern[i][j];
        ...
    }while(pattern[k] != '!');
}
当我在实例化类后访问另一个方法时,会出现问题:

Pattern.prototype.getPattern = function(number){
    ...
    return this.pattern;
}
使用此代码:

var pattern1 = new Pattern('filename.ext');
var myPattern1 = pattern1.getPattern(1);
由于初始化类中属性的异步方式,在创建类之后调用方法getPattern()会返回一个空结果,因为this.pattern尚未完成加载和后处理

我知道存在延迟和承诺的jQuery对象,但我还没有找到任何使用javascript和类的实现


有人能给我指出正确的方向吗?

很抱歉,我写这篇文章是作为回答,而不是评论。我的平板电脑目前不允许我写评论

我只是认为您可能会触发一个事件(可能使用PubSub),并将使用该类的代码放入EventHandler函数中,该函数在类完全加载后触发