getメッセージを変更して、まだ取得していないメッセージの差分のみを取得します。だから私は複数のユーザーを持つことになるたびに、私は他の人々のメッセージだけを取得します。デルタを5秒ごとに取得し、それを私がすでに検索した結果に追加したいと思います。角2観測可能な間隔でパラメータを送信する方法 - データフィードを連続的にアップロードする
getMessages(){
let maxMessageId = 0;
console.log(this.messages);
if(this.messages.length > 0)
{
maxMessageId = Math.max.apply(Math, this.messages.map(function(message){return message.messageAutoIncreamentId;}));
}
return Observable.interval(5000)
.switchMap(() =>this.http.get(this._domainUrl + 'message?maxMessageId='+ maxMessageId))
.map((response: Response)=>{
const messages = response.json().obj;
let transformedMessages : Message[] = [];
for(let message of messages)
{
transformedMessages.push(
new Message(
message.content,
message.user.firstName ,
message._id,
message.user._id,
message.messageAutoIncreamentId)
);
}
this.messages = transformedMessages;
return transformedMessages;
})
.catch((error: Response) => {
this.errorService.handleError(error.json());
return Observable.throw(error.json());
});
}
ここでの問題は、それがおそらく区間外で初期化されますのでmaxMessageId
は、常に0
であるということです。パラメータmaxMessageIdをswitchMapに渡すにはどうすればよいですか?
Rx/Observablesがデータを連続的に引き出すためのより良い方法はありますか?
あなただけの必要最小限にこれを取り除くことはできますか? Btwあなたが "switchMapにパラメータmaxMessageIdを渡す"とはどういう意味ですか?あなたはすでにそれをやっていると思います。 – martin
全範囲を理解するのは最小限です。 maxMessageId = 0; console.log(this.messages); (this.messages.length> 0) { maxMessageId = Math.max.apply(Math、this.messages.map(function(message) } trubleは、maxMessageIdが常に0であることです。データを正しく取得できませんか? –