0
我需要獲取數據,並且可能需要一些時間。如果需要超過100ms,我想顯示一個加載器。這是我做過什麼setTimeout並承諾
fetchOptions(value, page = 0){
return new Promise((resolve, reject) => { ... });
}
getOptions(text, page = 0) {
if (this.requestTimeout) clearTimeout(this.requestTimeout);
this.requestTimeout = setTimeout((()=>{
console.log("!!");
}), 100);
this.fetchOptions(text, page)
.then(data => {
//do something
//if (this.requestTimeout) clearTimeout(this.requestTimeout);
})
.catch(e => console.log(e));
}
fetchOptions
作品5秒因爲它包含了諸如
sleep(ms) {
var unixtime_ms = new Date().getTime();
while(new Date().getTime() < unixtime_ms + ms) {}
}
功能(因爲我想測試長取得處理)。
結果console.log
僅在承諾解決後才被調用。我真的需要一個幫助來理解爲什麼會發生,以及如何解決這個問題
'而(新的Date()。的getTime()
tcooc
@tcooc是正確的。您最好在睡眠方法的超時時間內使用承諾並解決問題。 像這樣:sleep(ms){return new Promise((resolve,reject)=> {setTimeout(resolve,5000);})} – dejakob
謝謝大家,它確實有道理。感覺自己真的很愚蠢:) –