2014-02-21 53 views
1

我在實現一個構造函數由ajax調用填充的javascript類時遇到問題。數據從文件中讀取並以異步方式正確填充類屬性。下面的代碼工作好嗎:Javascript OOP構造函數用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和類的任何實現。

任何人都可以指向正確的方向嗎?

回答

0

對不起,寫這個答案,而不是評論我的平板電腦不會讓我寫評論的時刻。

我只是覺得你可能會觸發一個事件(也許使用PubSub),並將你的類完全加載後觸發的EventHandler函數中使用該類的代碼。