我有一个函数,由observe
函数调用两次。正如您所看到的,在addMessage
函数中,检查是否使用相同的消息调用它,return
s。
我的问题是,使用相同的消息调用addMessage
函数两次。
我认为原因是因为它在添加第一条消息之前很快完成,第二条消息已经执行。
同步消息的最佳方法是,在处理第二个消息之前,第一个消息是否有时间保存?
this.messages.observe({
changed: (newMessage, oldMessage) => this.addMessage(newMessage)
});
和
private addMessage(message: Message): void {
let foundMessage: Message = this.localMessageCollection.findOne({ _id: message._id });
if (foundMessage && foundMessage._id === message._id) {
console.log('addMessage(found): '+message._id+' '+message.content);
return;
}
console.log('addMessage: '+message._id+' '+message.content);
this.addLocalMessage(message);
this.chatsStorageService.addMessage(this.activeChat, message).then((messageData: Message) => {
let data = {
chat: this.activeChat,
messageString: this.messageString,
sendMessage: true
}
this.events.publish('messages:update', data);
});
}