javascript - 如何使用 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
可能我需要以其他方式做到这一点。但我不知道如何制作它。
解决方案
您需要按照 Chris 的建议将区间逻辑包装在 annynymous 函数中。
像下面这样的东西应该可以工作。
var sendDataOnInterval = function (req, res) {
// place all existing code
res.send(question);
sendDataOnInterval(recursive, 5000);
};
app.get('/start/:handle', sendDataOnInterval);
推荐阅读
- r - 每日数据的正确频率应该是多少?
- mysql - Like/Upvote:单独的表或作为评论表中的实体
- jquery - 如何在 JQuery 中同时制作两个动画?
- java - 从资源中读取文件在 gitlab CI 中不起作用
- provisioning-profile - Store Bitrise Provisioning Profiles in the git repository
- angular - 在 Angular 7 路由中将查询字符串放在哈希之前
- c++ - Windows 8、8.1 和 10 上 IApplicationAssociationRegistration 接口的替代方案
- javascript - 为什么 OffsetTop 和 offsetLeft 不起作用?
- go - 如何使用 go 服务(正确)反应路由器?
- kotlin - 如何在 Spring @Service 测试中正确使用 Mockito 的验证