質問編集履歴
1
回答コードを記載しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -18,4 +18,28 @@
|
|
18
18
|
|
19
19
|
**関数内でデータベースから値を取得しeachメソッドで値を変数に格納。その後、変数をリターンする処理なのですが正常に動作しません。**
|
20
20
|
eachメソッドはPromiseオブジェクトを返すことはわかっているのですが、elementsに値が入るまで待つにはどのように修正したら良いでしょうか? いろいろ試してみたのですが、正しく動作しませんでした。
|
21
|
-
情報不足などありましたら、適宜追記していきますので何卒よろしくお願いいたします。
|
21
|
+
情報不足などありましたら、適宜追記していきますので何卒よろしくお願いいたします。
|
22
|
+
|
23
|
+
|
24
|
+
# 回答を参考にした解決コード
|
25
|
+
```Javascript
|
26
|
+
loadElements() {
|
27
|
+
// ①Promiseをreturn
|
28
|
+
return new Promise((resolve, reject) {
|
29
|
+
let elements = [];
|
30
|
+
this.db.elementsStore.each(ele => {
|
31
|
+
elements.push(new Element( ele.id, ...コンストラクター呼出し));
|
32
|
+
}).then( () => {
|
33
|
+
for (let i= 0 ; i < elements.length; i++) {
|
34
|
+
console.log(elements[i])
|
35
|
+
}
|
36
|
+
resolve(elements); // ② resolve関数呼出し
|
37
|
+
});
|
38
|
+
});
|
39
|
+
}
|
40
|
+
|
41
|
+
async getElements() {
|
42
|
+
// ③ awaitで同期待ち
|
43
|
+
const elements = await loadElements()
|
44
|
+
}
|
45
|
+
```
|