Мне нужно получить данные, и это может занять некоторое время. Если требуется более 100 мс, я хочу показать загрузчика. Это то, что я сделал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
вызывается только после того, как обетование разрешено. Мне действительно нужна помощь, чтобы понять, почему это происходит и как решить эту проблему.
'в то время как (новая дата(). GetTime()
tcooc
@tcooc является правильным. Лучше использовать обещание с разрешением в тайм-аут для метода сна. Нравится: sleep (ms) {return new Promise ((разрешить, отклонить) => {setTimeout (разрешение, 5000);})} – dejakob
Спасибо, ребята, это имеет смысл. Чувствовать себя действительно глупым сейчас :) –