JavaScriptで次のタスクを実行しました。約束を返すgetDataというメソッドを使用してDataBaseオブジェクトを作成します。この約束が解決されると、配列を返します。JavaScriptのスコープ外のデータを使用する
getDataメソッドを呼び出すDataという2番目のオブジェクトを作成します。配列の最初のメンバーの値を返すgetFirstというDataのメソッドを作成します。
私がこのタスクを理解しているなら、コールバック以外の約束から値を割り当てることはできないため不可能です。
(。実際には、タスクはより複雑であるが、私は私が問題を抱えた部分だけを表示するように簡素化しています)
ここでは、私が持っているものです。
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