setInterval中的函数参数未更改

问题描述 投票:1回答:1

我正在使用setInterval实现轮询,但是遇到了一些问题。我有一个轮询这样的函数

const pollMessages = () => {
  if (interval) {
    return false;
  }
  interval = setInterval(callApi, delay);
};

我还有清除间隔的功能

const stopPolling = () => {
  if (interval) {
    clearInterval(interval);
    interval = null;
  }
};

callApi函数接受一个参数,然后向端点发出请求。看起来像这样


  const callApi = () => {
    Api.get('/new-message', lastMessage)
  }

这里的陷阱是每次发出请求时,如果有新消息,则应该更新lastMessage变量,但是我遇到的问题是该值在新请求中不会更新。它继续发送旧的lastMessage。我尝试将更新的lastMessage作为参数传递给callApi,但没有任何区别。我希望在setInterval运行时可以在某些请求中更改lastMessage参数的情况。我该如何解决?

javascript setinterval polling
1个回答
0
投票

如果我正确理解了您的代码,这是因为lastMessage的值是作为参数发送的,而不是对变量本身的引用。

您将要创建一个setter函数,可以通过传递一个值来调用它以更改变量。

例如:

const setLastMessage = (value) => {
  lastMessage = value;
}

然后您将setLastMessage作为参数传递,并相应地调整API函数。

© www.soinside.com 2019 - 2024. All rights reserved.