回答編集履歴

3

markdown

2018/11/06 12:37

投稿

think49
think49

スコア18164

test CHANGED
@@ -4,19 +4,19 @@
4
4
 
5
5
  ~~貼り付けて頂いたアニメーションgifでは、入力速度の遅い「web」でも「Webディレクター」が重複しているので、入力速度の問題ではないように思います。
6
6
 
7
- 重複回避の基本は
7
+ 重複回避の基本は~~
8
8
 
9
9
 
10
10
 
11
- - 重複チェックし、重複内容は挿入しない
11
+ - ~~重複チェックし、重複内容は挿入しない~~
12
12
 
13
- - 常に全削除→全挿入
13
+ - ~~常に全削除→全挿入~~
14
14
 
15
15
 
16
16
 
17
- ですが、掲示されたコードはどちらもせずに、ただ取得したサジェストコンテンツを挿入するだけです。
17
+ ~~ですが、掲示されたコードはどちらもせずに、ただ取得したサジェストコンテンツを挿入するだけです。
18
18
 
19
-
19
+ ~~
20
20
 
21
21
  > ```HTML
22
22
 
@@ -26,9 +26,9 @@
26
26
 
27
27
 
28
28
 
29
- こちらの子ノード群をサジェスト出力する度に削除するか、ul要素ノードそのものを毎回、置換するのが比較的簡単な解決法だと思います。~~
29
+ ~~こちらの子ノード群をサジェスト出力する度に削除するか、ul要素ノードそのものを毎回、置換するのが比較的簡単な解決法だと思います。
30
30
 
31
-
31
+ ~~
32
32
 
33
33
  ### 削除/追加タイミングの問題
34
34
 

2

markdown

2018/11/06 12:37

投稿

think49
think49

スコア18164

test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
 
60
60
 
61
- 非同期通信前に」「削除し、非同期通信後に追加していますが、非同期通信中に割り込まれたら、破綻します。
61
+ 非同期通信****に削除し、非同期通信****に追加していますが、非同期通信中に割り込まれたら、破綻します。
62
62
 
63
63
  **追加する直前に削除**して下さい。
64
64
 

1

削除/追加タイミングの問題

2018/11/06 12:35

投稿

think49
think49

スコア18164

test CHANGED
@@ -1,8 +1,8 @@
1
- ### 重複チェックがない
1
+ ### 重複チェックがない (※不適切な指摘でした)
2
2
 
3
3
 
4
4
 
5
- 貼り付けて頂いたアニメーションgifでは、入力速度の遅い「web」でも「Webディレクター」が重複しているので、入力速度の問題ではないように思います。
5
+ ~~貼り付けて頂いたアニメーションgifでは、入力速度の遅い「web」でも「Webディレクター」が重複しているので、入力速度の問題ではないように思います。
6
6
 
7
7
  重複回避の基本は
8
8
 
@@ -26,7 +26,53 @@
26
26
 
27
27
 
28
28
 
29
- こちらの子ノード群をサジェスト出力する度に削除するか、ul要素ノードそのものを毎回、置換するのが比較的簡単な解決法だと思います。
29
+ こちらの子ノード群をサジェスト出力する度に削除するか、ul要素ノードそのものを毎回、置換するのが比較的簡単な解決法だと思います。~~
30
+
31
+
32
+
33
+ ### 削除/追加タイミングの問題
34
+
35
+
36
+
37
+ > ```JavaScript
38
+
39
+ > $('.profile-edit-suggest-list-item').remove(); // 削除
40
+
41
+ > $.ajax({
42
+
43
+ > //省略
44
+
45
+ > }
46
+
47
+ > })
48
+
49
+ > .then(
50
+
51
+ > function (data) {
52
+
53
+ > // ...(中略)...
54
+
55
+ > $suggestList.append(dynamicSuggestListItem); // 追加
56
+
57
+ > ```
58
+
59
+
60
+
61
+ 非同期通信前に」「削除」し、非同期通信後に「追加」していますが、非同期通信中に割り込まれたら、破綻します。
62
+
63
+ **追加する直前に削除**して下さい。
64
+
65
+
66
+
67
+ > 単にulリストを消去するだけでは、正常に動作しない場合があります。それは、サジェスト取得の通信のレスポンス順序が逆転する場合です。そのような場合でも厳密な動作を期待するなら、ulリストの消去前に、現在表示されている内容が、現在入力されている内容であるかを確認する必要があります。
68
+
69
+
70
+
71
+ こちらも対処する場合、Promiseを配列管理する等して、現在より前にリクエストされた通信が生きているなら、中断させるロジックが必要になります。
72
+
73
+
74
+
75
+ - [XMLHttpRequest.abort() - Web API インターフェイス | MDN](https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest/abort)
30
76
 
31
77
 
32
78