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

回答編集履歴

1

chousei

2019/07/11 08:28

投稿

yambejp
yambejp

スコア117888

answer CHANGED
@@ -3,4 +3,53 @@
3
3
  appendFuncが非同期でうごいていればconsole.logとasync/awaitの関係にないので
4
4
  保証はされないのでは?
5
5
  ただ例示の処理自体非同期ではないので普通に指定順に実行されて
6
- complete時にはliの配置は終わっているように見えます。
6
+ complete時にはliの配置は終わっているように見えます。
7
+
8
+ # sample
9
+ - これはlengthが0になる
10
+ ```javascript
11
+ <script>
12
+ $(function(){
13
+ const appendFunc = (async () => {
14
+ const insertFunc = () => {
15
+ return new Promise( resolve => {
16
+ setTimeout(function(){
17
+ for(let i=0;i<100;i++){
18
+ $('ul').append('<li>');
19
+ }
20
+ resolve();
21
+ },1000);
22
+ });
23
+ };
24
+ await insertFunc();
25
+ })();
26
+ console.log($('ul li').length);
27
+ console.log('complete');
28
+ });
29
+ </script>
30
+ <ul></ul>
31
+ ```
32
+ - これはlengthが100になる
33
+
34
+ ```javascript
35
+ <script>
36
+ $(function(){
37
+ const appendFunc = (async () => {
38
+ const insertFunc = () => {
39
+ return new Promise( resolve => {
40
+ setTimeout(function(){
41
+ for(let i=0;i<100;i++){
42
+ $('ul').append('<li>');
43
+ }
44
+ resolve();
45
+ },1000);
46
+ });
47
+ };
48
+ await insertFunc();
49
+ console.log($('ul li').length);
50
+ console.log('complete');
51
+ })();
52
+ });
53
+ </script>
54
+ <ul></ul>
55
+ ```