每次收到新消息时更新标题中的值

时间:2017-04-15 21:28:57

标签: javascript jquery

我正在尝试更新标题中的值,当用户点击我的页面/标签以通知新消息时以及当他返回标签时将该值重置为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;
}

1 个答案:

答案 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);
}