teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追記しました

2019/04/30 13:50

投稿

TosuTosu
TosuTosu

スコア49

title CHANGED
File without changes
body CHANGED
@@ -14,4 +14,40 @@
14
14
  temp = notes; // この処理を最初に実行したい!
15
15
  });
16
16
  console.log(JSON.stringify(temp)); // 実行結果: undefined
17
- ```
17
+ ```
18
+ **■追記**
19
+ **以下の方法で解決できましたが、いまいち動作がわかりません。**
20
+ 以下の理解で正しいでしょうか?
21
+ ① 処理待ちしたい関数は Promise でリターンする。
22
+ ② 処理待ちしたい関数の受けて側は await で Promise が resolve になるまで待つ。
23
+ ③ awaitを持つ関数は宣言の前に await を宣言する。
24
+
25
+ 以下今回のコードと実行結果になります。
26
+ いまいち挙動の理解ができていないので コードが不安であります。他に記述する方法や間違っている点があれば教えていただきたいです。よろしくお願いいたします。
27
+
28
+ **■コード**
29
+ ```Javascript
30
+ function test() {
31
+ return new Promise(function(resolve, reject) {
32
+ evdDB.evdNoteStore
33
+ .toArray()
34
+ .then(function(notes) {
35
+ console.log(notes);
36
+ resolve(notes);
37
+ });
38
+ });
39
+ }
40
+
41
+ async function call() {
42
+ console.log("inner call start");
43
+ var result = await test();
44
+ console.log(JSON.stringify(result));
45
+ console.log("inner call end");
46
+ }
47
+
48
+ console.log("outer call start");
49
+ call()
50
+ console.log("outer call end");
51
+ ```
52
+ **■実行結果**
53
+ ![イメージ説明](7abd0929f50c5d439fa7dddd22950a5d.png)

1

タイトルを変更しました。

2019/04/30 13:50

投稿

TosuTosu
TosuTosu

スコア49

title CHANGED
@@ -1,1 +1,1 @@
1
- 非同期処理を待ち、変数を代入したい(IndexDB, Dexie.js)
1
+ 非同期処理を待ち、そこで得た値を変数を代入したい(IndexDB, Dexie.js)
body CHANGED
@@ -1,4 +1,4 @@
1
- 非同期処理を待ち、変数を代入したいです。
1
+ **非同期処理を待ち、変数を代入したいです。**
2
2
  仮のテストコードを書いて実行しているのですが、非同期処理のところで詰まっています。
3
3
 
4
4
  コードの内容はデータベースからレコードを取得する関数です。IndexDBのラッパーDexie.jsを利用しています。