首页 > 解决方案 > 函数 setTimeout 在 heroku 上不起作用

问题描述

我写了一个服务器,在本地一切都很好,但是在将它部署到 heroku 之后 setTimeout 立即执行,没有延迟。尝试部署setTimeout(openCard(buttonIndex), 1000), timeoutID 是全局变量。Aclually不做什么

const clickButton = (client, buttonIndex, time) => {
  if(!(users[client.id])['isMaster']) {
    if(room.teamTurn === (users[client.id])['team'] && !arrayToPlay[buttonIndex].isClicked && room.gameStarted && !globaleTime.MasterTurn) {
      if(room[room.teamTurn].length > 1) {
        addChosenWord(client,buttonIndex);
      }
      wordChosen = chosenWordCorrect() ? buttonIndex : null;
      io.emit('wordChosen', wordChosen);
      if(wordChosen !== null){
        clearTimeout(timeoutID);
        const date = new Date();
        const localTimeOffset = date.getTimezoneOffset() * 60000;
        const offset = date.getTime() - localTimeOffset - time;
        timeoutID = setTimeout(()=>openCard(buttonIndex), 1000 + offset);
        } else {
          clearTimeout(timeoutID)
          io.emit('room', room);
        }
    } else {
      io.emit('buttonClicked', buttonIndex,client.id);
    }
  }
}

标签: javascriptnode.jsheroku

解决方案


我注意到您在代码中有setTimeout(() => openCard(buttonIndex), 1000 + offset);但在您的询问setTimeout(openCard(buttonIndex), 1000)中。

检查 是否在openCard中的箭头函数内setTimeout


推荐阅读