我在JavaScript中給出了以下任務:使用名爲getData的方法創建一個DataBase對象,該方法返回一個承諾。當這個承諾解決時,它返回一個數組。在javascript範圍之外使用數據
創建第二個稱爲Data的對象,該對象調用getData方法。爲Data創建一個名爲getFirst的方法,該方法返回數組中第一個成員的值。
如果我理解任務,這是不可能的,因爲您不能從回調之外的承諾分配值。
(實際上,任務更加複雜,但我簡化爲只顯示我是有問題的部分。)
這是我有:
function DataBase(){
this.getData = function(){
var data = [1, 2, 3, 4, 5];
return Promise.resolve(data);
}
}
function Data(d){
this.first = null;
that = this;
this.getFirst = function(){
return this.first;
}
this.initialize = function(){
dataBase = new DataBase();
dataBase.getData().then(function(theArray){
console.log(theArray); //works fine
that.first = theArray[0]; //doesn't work because promise is asyncronous
})
}
}
d = new Data();
d.initialize();
result = d.getFirst();
console.log(result)// is null
'Data'不是方法,這是一個構造函數在這裏。 –
你應該要求澄清。正如所給出的那樣,這個任務完全是無稽之談(是的,你可以在此引用我)。或者切換你的課程:-) – Bergi
道歉。實際任務陳述「對象」,而不是方法。我在原帖中解決了我的錯誤。 – user3520634