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

回答編集履歴

1

chousei

2019/09/19 10:21

投稿

yambejp
yambejp

スコア117875

answer CHANGED
@@ -68,4 +68,52 @@
68
68
  (1秒待って)
69
69
  3
70
70
  he
71
- ※すでにasnycFuncが処理済みなのでhe likesは表示されない
71
+ ※すでにasnycFuncが処理済みなのでhe likesは表示されない
72
+
73
+ # さらに
74
+
75
+ ```javascript
76
+ const asyncFunc=()=>{
77
+ return new Promise(resolve=>{
78
+ setTimeout(()=>{
79
+ console.log(3);
80
+ resolve("he");
81
+ },1000);
82
+ });
83
+ }
84
+
85
+ const wait=async()=>{
86
+ console.log(2.1);
87
+ console.log(2.2);
88
+ await console.log(2.3);
89
+ console.log(2.4);
90
+ console.log(2.5);
91
+ let a = await asyncFunc().then(val=>{
92
+ console.log(val);
93
+ return val + " likes";
94
+ });
95
+ console.log(a);
96
+ console.log(5);
97
+ }
98
+
99
+ console.log(1);
100
+ wait();
101
+ console.log(4.1);
102
+ for(var i=0;i<999999999;i++){} //同期処理で重めのループ
103
+ console.log(4.2);
104
+ ```
105
+ 結果:
106
+ 1
107
+ 2.1
108
+ 2.2
109
+ 2.3 //ここでawaitがかかるので処理が移り
110
+ 4.1
111
+ (ちょっと考え込んで)
112
+ 4.2 //同期処理が続くので終了まで待ち
113
+ 2.4 //元の処理にもど
114
+ 2.5
115
+ (1秒待って)
116
+ 3
117
+ he
118
+ he likes
119
+ 5