0
我有下面的代碼 JS的setInterval被稱爲多次
if (input.isValidLink()) {
store()
.then(db => db.update(message.from, text, json))
.then(value => value.selectAllFromDB())
.then(users => makeRequest(users));
}
的AMD makeRequest的功能
makeRequest(user) {
setInterval(() => {
users.forEach(user => {
httpRequest(user.json);
});
}, 10000);
}
我想要做的,是用戶的selectAllFromDB function
回報陣列從數據庫,它作爲參數傳遞給makeRequest function
,它循環通過每個用戶,發送請求接收json
數據並每10秒做一次,所以它不會錯過任何更改。每當有用戶發送鏈接時,它也應該開始觀看這個鏈接。問題在於,在每個接收到的鏈接上,它會調用makeRequest function
,這會產生另一個間隔,如果收到兩個鏈接,我會有兩個間隔。第一循環通過這個數組
[{
id: 1234,
json: 'https://helloworld.com.json',
}]
其次通過這個
[{
id: 1234,
json: 'https://helloworld.com.json',
}, {
id: 5678,
json: 'https://anotherlink.com.json',
}]
有什麼辦法這個可以固定所以只有一個間隔將被創造出來的?
一般提示:一個setInterval你不存儲返回值以便能夠稍後取消它幾乎總是一個錯誤。在你的情況下,你可能應該取消最後的時間間隔並創建一次。 – Matthias247