我的应用正在使用Pubnub,我正在使用以下代码检索聊天记录:
$scope.populateMessages = function() {
// Populate message history using jsapi (optional)
PubNub.jsapi.history({
channel: $scope.channel,
count: 15,
callback: function(payload) {
payload[0].forEach(function(message) {
$scope.messages.push(message);
//message timetoken
console.log(message.pn_apns.aps.timetoken);
});
$scope.messagesStatus = false;
$scope.connectionStatus = false;
$scope.$apply();
}
});
};
当我的应用程序来自后台时,我想再次检查新邮件。 但是,当我运行上面的代码时,我得到重复。如果我在运行上面的代码之前清除了$ scope.messages,那么它只有加载时间。
所以Wat I目前正在尝试通过检索现有消息的时间标记来检查当前消息列表:
var div = $('.list');
var divs = $('.item .chatMessage');
var divArray = [];
for (var i = 0; i < divs.length; i += 1) {
divArray.push(divs.attr('timetoken'));
}
//list of existing messages timetokens
console.log(divArray);
我想将它们与上面使用populateMessages函数检索的新消息进行比较。如果消息timetoken已经存在则不执行任何操作,如果timetoken不存在则添加消息($ scope.messages.push(message);)
答案 0 :(得分:1)
如果您使用的是lodash
或underscore
等库,则可以
$scope.messages = _.uniq($scope.messages, function(msg) { return msg.timetoken;})