ユーザーが Twitter に投稿できるアプリを作成しています。送信ボタンをクリックすると、投稿フォームが閉じます。データ ストアに保存され、サーバーに送信される Message オブジェクトを作成します。サーバーは Post オブジェクトを作成し、Twitter にリクエストを送信します。次に、サーバーは Post オブジェクトを更新し、更新された情報を UI に返信します。
その部分はすでに機能しています。しかし、メッセージが送信されなかったことをユーザーに警告し、投稿フォームを開いたままにしておくことができるように、それが機能していないかどうかを知る必要があります。これが私のアプリに関するいくつかの関連情報です。
Social.Message = DS.Model.extend({
text: DS.attr("string"),
created: DS.attr("date"),
isPending: DS.attr("boolean"),
posts: DS.hasMany("Social.Post")
});
Social.Post = DS.Model.extend({
text: DS.attr("string"),
status: DS.attr("string"),
created: DS.attr("date"),
message: DS.belongsTo("Social.Message"),
msgStatus: function() {
return ((this.get('status') === 'S') ? true : false);
}.property('status')
});
投稿 (ステータス) のライフサイクルは、P (保留)、Q (キュー)、S (送信済み)、E (エラー) の可能性もあり、私が本当に探しているステータスです。saveMessage メソッドは次のとおりです。
saveMessage: function(text){
var acct = Social.Account.find(this.get("id")),
msg = Social.store.createRecord(
Social.Message,
{
text: text,
created: new Date()
}
);
acct.get("messages").addObject(msg);
Social.store.commit();
Ember.run.later(this, function() {
msg.get('posts').forEach(function(p){
p.reload();
});
}, 1000);
}
サーバーが処理できるように 1 秒間一時停止してから、Twitter からの応答で Post オブジェクトをリロードしようとしていることがわかります。これらの最後の数行は、この新しいコードが入ると思われる場所ですが、戻ってこないかもしれない何かを聞く方法がわかりません. 1 秒間「待つ」のではなく、メッセージが更新されるだけでよかったと思います。しかし、それを達成する方法がわかりません。
考え?