Ich habe einen Grafikeditor, in dem der Benutzer die Option zum Erstellen eines Knotens hat. Es wird mit allen aktuell ausgewählten Knoten verbunden. Im Google-Dokument sieht es so aus, als ob ein Knoten (seine Zeichenfolgenbezeichnung) der durch Kommas getrennten Menge verbundener Etiketten zugeordnet ist. Also, einen Knoten hinzuzufügen, habe ich zunächst eine leere Karte Artikel erstellenAktualisieren von gerade erstellten kollaborativen Karteneinträgen
map.set(name, "");
und dann separat fügen Sie die angeschlossenen Elemente
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)
Das Problem, dass map.get ist erkennt, dass der Knoten nicht hinzugefügt wird in die Karte noch. Es braucht etwas Zeit. Es scheint, dass die Operationen selbst innerhalb eines einzelnen JS-Clients (read-my-writes inconsistent) nicht blockierend sind. Wie soll ich damit arbeiten?
Ich habe diese Inkonsistenz festgestellt, wenn versucht wurde, zwei Verbindungen herzustellen (nur um zu erkennen, wenn Verbindungen fehlgeschlagen sind, weil es passieren kann, dass Verbindung verloren geht und alle meine Edits nicht an Server weitergeben und ich wollte den Benutzer darüber wissen).
Dank hören, ich kann es überprüfen. Aber ich verstehe nicht, welcher Konflikt hier auftreten kann. Ein anderer Client verwendete nur, um den "schmutzigen" Zustand anzuhören und zu bereinigen. Ich habe das 'DocumentStateChangedEvent' versucht. Das [einzige verfügbare Beispiel ist] (https://momeet.world-telephone.com/download/iptv/android-sdk-linux/extras/google/google_play_services/samples/drive/playground/src/com/google/android/ gms/drive/sample/realtimeplayground/PlaygroundDocumentActivity.java) 'mRealtimeDocument.addDocumentSaveStateChangedListener (mSaveStateListener'. –
Aber Logging' mRealtimeDocument.addDocumentSaveStateChangedListener' ist undefiniert. Ich kann 'doc.getModel(). getRoot()' aus dem Dokument onFileLoad bekommen Ereignis, aber dieses Dokument hat keine addStateChangeListener –
Ich denke, das ist, weil ich den gleichen Code für beide Echtzeit-Clients teilen.Eine solche Inkonsistenz tritt auf, wenn ich das Diagramm über verschiedene Browser-Registerkarten bearbeiten, wenn jede Webseite nur eine Dokumentverbindung herstellt. –