ユーザーがノードを作成するオプションを持つグラフエディターがあります。現在選択されているすべてのノードに接続されます。Google ドキュメントでは、ノード (その文字列ラベル) が接続されたラベルのコンマ区切りセットにマップされているように見えます。ノードを追加するには、まず空のマップ アイテムを作成します。
map.set(name, "");
次に、接続されたアイテムを個別に追加します
if (map.get(a) == null) throw new Error("node " + a + " does not exist") // fails here
if (map.get(b) == null) throw new Error("node " + b + " does not exist")
map.set(a, a_connections)
map.set(b, b_connections)
問題は、ノードがまだマップに追加されていないことを map.get が検出することです。時間がかかります。単一のJSクライアント内でも操作がブロックされないようです(read-my-writes inconsistent)。私はそれをどのように扱うべきですか?
2 つの接続を確立しようとしたときに、この不一致に気付きました (接続が失われ、すべての編集内容がサーバーに反映されない可能性があるため、接続がいつ失敗したかを検出するためであり、ユーザーにそのことを知らせたかったのです)。