![](/img/trans.png)
[英]Javascript variable not changing inside setInterval() function?
[英]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.