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

回答編集履歴

1

追記

2016/06/16 05:06

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -12,4 +12,25 @@
12
12
  });
13
13
  }
14
14
  }
15
- ```
15
+ ```
16
+
17
+ #追記
18
+ どうしてもコンストラクタで完了を待ちたいのであれば、**お勧めはしませんが**このような方法があります。
19
+ ```Javascript
20
+ constructor(id) {
21
+ this.id = id;
22
+ this.loaded = false;
23
+ db.get(`SELECT content FROM pages WHERE id=${id}`, function(err, row) {
24
+ this.content = row.content;
25
+ this.title = row.title;
26
+ this.loaded = true;
27
+ });
28
+
29
+ // 非同期処理内でフラグが立つまで無駄な処理を行う
30
+ var waitCount = 0;
31
+ while(!this.loaded) {
32
+ waitCount++;
33
+ }
34
+ }
35
+ ```
36
+ Javascriptにはsleep等のメソッドが無いため、ブロッキングしてスレッドを休止させる方法がありません。CPUを無駄に使って待たせることになりますし、全ての環境でちゃんとsleepの代わりになるかどうかわかりません。