【问题标题】:Trouble Using setInterval function使用 setInterval 函数时遇到问题
【发布时间】:2013-04-22 22:29:47
【问题描述】:

我在下面的工作中遇到了一些麻烦。我正在尝试运行这个名为 Chat.fetch 的异步函数,我可以获得它返回的消息以正确显示。当我尝试通过 setInterval 传递它时,它会返回一次聊天消息,但不会每 3 秒刷新一次,这就是我想要做的。任何方向都会很棒。谢谢!

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
   <script src="http://chatbuilder.hackreactor.com/ChatBuilder.js"></script>
  </head>
    <body>
      <script>
         Chat.guide.start();
      </script>


  <h2>Borken Chat</h2>

  <input class="draft" type="text"/> <button class="send" disabled>send</button>



  <ul class="messages">


     PrintChat=function(Chat_Messages){
       var y=Chat_Messages.length;
       for(i=0;i<y;i++){
         Chat.display(Chat_Messages[i]);
       }
     }

   PrintMessages=Chat.fetch(PrintChat);
   setInterval(PrintMessages,3000);


  </script>

</ul>

【问题讨论】:

  • 如果它是异步的,你应该等待它(而不是每3秒随机触发你的显示功能)?查看他们的文档。
  • 有什么方向吗?我缺少一个开头的 &lt;script&gt; 标记、一些用于您的 html 和正文的结尾标记以及一个 doctype 声明和 &lt;title&gt; 元素。
  • 它在代码中,只是在复制粘贴时忘记了。对不起。
  • 指令是使用 setTimeout 或 setInterval 让它每 3 秒刷新一次来自服务器的消息。
  • 您使用的是哪个脚本?请链接到其文档/主页。

标签: javascript setinterval


【解决方案1】:

试试这个:

function fetchNew() {
 var PrintChat=function(Chat_Messages){
   var y=Chat_Messages.length;
   for(i=0;i<y;i++){
     Chat.display(Chat_Messages[i]);
   }
 }
 Chat.fetch(PrintChat);
}

setInterval(fetchNew,3000);

您原始代码中的问题是PrintMessages 是调用函数的结果,而不是函数本身。

【讨论】:

  • 嘿,谢谢伙计!所以诀窍就是将结果作为变量嵌入到函数中,然后以这种方式运行 setInterval?
  • 关键思想是 setInterval 的第一个参数需要是一个实际的函数。在您的原始代码中,它给出了 evaluating 函数的结果。所以我刚刚创建了一个新函数,它可以满足您的要求,即“调用 Chat.fetch,将 Chat.fetch 传递给 PrintChat 函数作为参数”的函数。所以 Chat.fetch 本身也接受一个函数作为参数,就像 setInterval 一样,当然它们是不同的函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
相关资源
最近更新 更多