首页 > 解决方案 > 如何使用 socket.io 制作从 Node.js 到 React 的发射列表?

问题描述

我需要用 JS 制作一种“电影”(通过“电影”我的意思是每 N 秒更换一次页面)。

我有来自 node.js 的对象数组并使用 socket.io 我想每 N 秒将它们的内容发送到 React。

这是我的 API 端点:

  router.get("/start/:handle", (req, res) => {
      Game
        .findOne({ url: req.params.handle })
        .then(game => {
          let questionList = [];
          game.blocks.map(block => {
            block.questions.map(question => {
              questionList.push(question)
            })
          })
          questionList.map(question => {
            return setInterval(
              res.status(200).send(question)
              , 5000);
          })
        })
        .catch(err => console.log("start game, err =>", err))
    })

但它不起作用。我有错误

TypeError [ERR_INVALID_CALLBACK]: Callback must be a function

可能我需要以其他方式做到这一点。但我不知道如何制作它。

标签: javascriptreactjssocket.io

解决方案


您需要按照 Chris 的建议将区间逻辑包装在 annynymous 函数中。

像下面这样的东西应该可以工作。

var sendDataOnInterval = function (req, res) {
      // place all existing code
      res.send(question);
      sendDataOnInterval(recursive, 5000);
};

app.get('/start/:handle', sendDataOnInterval);       

推荐阅读