回答編集履歴
3
markdown
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
test
CHANGED
@@ -58,7 +58,7 @@
|
|
58
58
|
|
59
59
|
|
60
60
|
|
61
|
-
非同期通信前に
|
61
|
+
「非同期通信**前**に削除し、非同期通信**後**に追加していますが、非同期通信中に割り込まれたら、破綻します。
|
62
62
|
|
63
63
|
**追加する直前に削除**して下さい。
|
64
64
|
|
1
削除/追加タイミングの問題
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
|
|