回答編集履歴

1

追記

2016/06/16 05:06

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
@@ -27,3 +27,45 @@
27
27
  }
28
28
 
29
29
  ```
30
+
31
+
32
+
33
+ #追記
34
+
35
+ どうしてもコンストラクタで完了を待ちたいのであれば、**お勧めはしませんが**このような方法があります。
36
+
37
+ ```Javascript
38
+
39
+ constructor(id) {
40
+
41
+ this.id = id;
42
+
43
+ this.loaded = false;
44
+
45
+ db.get(`SELECT content FROM pages WHERE id=${id}`, function(err, row) {
46
+
47
+ this.content = row.content;
48
+
49
+ this.title = row.title;
50
+
51
+ this.loaded = true;
52
+
53
+ });
54
+
55
+
56
+
57
+ // 非同期処理内でフラグが立つまで無駄な処理を行う
58
+
59
+ var waitCount = 0;
60
+
61
+ while(!this.loaded) {
62
+
63
+ waitCount++;
64
+
65
+ }
66
+
67
+ }
68
+
69
+ ```
70
+
71
+ Javascriptにはsleep等のメソッドが無いため、ブロッキングしてスレッドを休止させる方法がありません。CPUを無駄に使って待たせることになりますし、全ての環境でちゃんとsleepの代わりになるかどうかわかりません。