簡體   English   中英

setInterval 內函數中的參數沒有改變

[英]arguments in function inside setInterval not changing

我正在使用 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 參數的情況。 我該如何解決?

如果我正確理解您的代碼,這是因為 lastMessage 的值是作為參數發送的,而不是對變量本身的引用。

您需要創建一個 setter 函數,您可以使用要傳遞的值調用該函數以更改變量。

例如:

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

然后您將setLastMessage作為參數傳遞並相應地調整您的 API 函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM