クライアント上のコレクションに挿入 (更新、削除など) する場合、ローカル オブザーバーは同期的に、つまり挿入の効果をローカルでシミュレートしながら起動します。これは、後続のコードが競合状態なしで挿入のすべての副作用に依存できることを意味します。
サーバー上の動作は異なるようです。オブザーバーは非同期的にトリガーされるようで、オブザーバーが実行される前に挿入コールバックが返される場合があります。これにより、コードを適切に同期することがより困難になります。挿入のすべての副作用がいつ発生したかを判断するための信頼できる方法が見つかりませんでした。クライアント以外では、挿入操作の直後に副作用に依存すると競合状態が発生し、クライアントとサーバー間でコードを共有することがより困難になります。
これは意図した動作ですか? すべてのオブザーバーがいつ実行されたかをサーバー側で通知するための適切な回避策はありますか?
(私の使用例: 元に戻す/やり直しに必要な「コマンド」テーブルがあります。新しいコマンドを挿入すると、ローカルの同期されていないコレクションへの変更がトリガーされます。つまり、コマンドはオブザーバー内から実行されます。後続のコマンドには、ローカル コレクションへの変更を完了する必要があります。そうしないと失敗します。)