首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >停止先前的post请求Node.js

停止先前的post请求Node.js
EN

Stack Overflow用户
提问于 2018-05-30 07:32:00
回答 3查看 42关注 0票数 0

TLDR:如何设置post请求,每秒将接收的数据发送到另一个源,然后当发出相同的post请求时,它停止发送旧数据,并开始每秒再次发送新数据。

我有一个运行Express的Node.js服务器。每次客户端向我的某个路由发出post请求时,我每秒(使用setInterval)向Apache Kafka队列发送数据。当向我的服务器发出新的post请求时,它会创建该setInterval函数的一个新实例,并实际每秒发送新数据和旧数据。

我需要Node.js停止向队列发送旧数据,改为发送新数据。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-30 08:00:52

您需要一个可从您的逻辑访问的属性,用于将数据发送到Kafka。该属性将用作帖子数据的当前状态。第一次收到帖子时,您将初始化状态并运行setInterval()。之后,您只需更新状态,setInterval内部的函数将发送更新后的数据。

它看起来像这样:

代码语言:javascript
复制
let postData;

router.post('/', function(req) {
  if(!postData) {
    //run your setInterval logic here
  } else if(req.body !== postData) {
    postData = req.body
  }
});
票数 0
EN

Stack Overflow用户

发布于 2018-05-30 07:50:08

你有几个选择。

在创建新的timer之前停止原来的interval timer对象。当您使用setInterval()时,它将返回一个timer对象,您可以在以后对该对象使用clearInterval()。你得把它保存起来。然后,当您要创建新的间隔计时器时,可以在旧计时器上调用clearInterval()

让一个定时器一直在运行。只需替换您要发送的数据。在这种情况下,您只需保持原始计时器运行,并更新每次触发时要发送的存储数据。然后,您永远不会运行多个计时器。

票数 0
EN

Stack Overflow用户

发布于 2018-05-30 07:50:29

  1. 有一个中心位置,您可以在其中调用setInterval,并保留setInterval.
  2. Use clearInterval的结果以取消以前的任何setInterval调用
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50594381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档