我正在尝试更新标题中的值,当用户点击我的页面/标签以通知新消息时以及当他返回标签时将该值重置为0.由于某种原因,该值总是递增无论怎样,即使我将其设置为0,当用户再次激活标签时,即使该功能的其余部分已正确执行,也会将document.title更改回“聊天”。
$(document).ready(function(){
var unreadMessages = 0;
var ws = new WebSocket("ws://localhost:8080/ws");
ws.addEventListener("message", function(e){
createMessage(e.data);
unreadMessages = updateNotification(unreadMessages);
});
});
function updateNotification(unreadMessages){
unreadMessages++;
$(window).blur(function(){
if(unreadMessages>0){
document.title = "("+ unreadMessages + ") Chat";
}
});
$(window).focus(function(){
unreadMessages=0;
document.title = 'Chat';
});
return unreadMessages;
}
答案 0 :(得分:0)
你的整个结构是错误的,不能那样工作。就像@ mpf82一样,每次收到消息时都不要设置新的事件处理程序。尝试这样的事情:
function promisify(f) {
return new Promise(f);
}
function main(){
return Promise.all([f1, f2, f3].map(promisify));
}
main().then(function (results) {
console.log(results);
});
function f1(callback){
setTimeout(function () {
callback('result from f1');
}, 100);
}
function f2(callback){
setTimeout(function () {
callback('result from f2');
}, 500);
}
function f3(callback){
setTimeout(function () {
callback('result from f3');
}, 200);
}