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和類的任何實現。
任何人都可以指向正確的方向嗎?