ストアの同期が正常に完了したら、ユーザーにメッセージを表示できるようにしたいと考えています。ただし、コールバックを使用したり、これを同期的に呼び出したりする方法はないようです。これは一般的な問題であるに違いないため、すぐに提供されないことに少し驚いています。
これに対する回避策はありますか?
ストアの同期が正常に完了したら、ユーザーにメッセージを表示できるようにしたいと考えています。ただし、コールバックを使用したり、これを同期的に呼び出したりする方法はないようです。これは一般的な問題であるに違いないため、すぐに提供されないことに少し驚いています。
これに対する回避策はありますか?
これに対する適切な解決策を見つけるのに何年もかかりました。最後に、正常に動作しているように見えるストアの書き込みイベントにリスナーを追加しました。頻繁に必要になるため、ストアのプロトタイプに追加されました。
Ext.data.Store.prototype.syncWithListener = function(onWriteComplete, syncMethod) {
this.on('write', onWriteComplete, this, {single:true});
var syncResult = syncMethod ? syncMethod.apply(this) : this.sync();
if (syncResult.added.length === 0 &&
syncResult.updated.length === 0 &&
syncResult.removed.length === 0) {
this.removeListener('write', onWriteComplete, this, {single:true});
onWriteComplete(this);
}
return syncResult;
};