#ionic-framework #ionic3
#ionic-framework #ionic3
Вопрос:
У меня есть свой LoadingController :
const loader = this.loadCtrl.create({
content: 'Loading ...',
duration: 5000
});
loader.present();
Сразу после того, как у меня есть вызов api
myApi.Function().then(res => {
console.log(res);
}
Я хочу, чтобы dismiss
мой LoadingController завершался, когда мой вызов api завершен ИЛИ если моя продолжительность завершена.
Как я могу вызвать событие loader.dismiss()
после продолжительности?
Спасибо,
Комментарии:
1. если вы используете
then
свойFunction
, вы должны вернуть обещание. если это не так, попробуйте использоватьsubscribe
вместо этого.
Ответ №1:
Вы можете использовать Promise.race()
для этого:
Promise.race()
Метод возвращает обещание, которое разрешает или отклоняет, как только одно из обещаний в итерируемом разрешает или отклоняет, со значением или причиной из этого обещания.
const delayPromise = new Promise(resolve => window.setTimeout(() => resolve(), 3000));
const apiPromise = myApi.Function();
const loader = this.loadCtrl.create({
content: 'Loading ...',
});
loader.present();
Promise.race([delayPromise, apiPromise]).then(res => {
loader.dismiss();
if(res) {
// apiPromise finished first
} else {
// delayPromise finished first
}
});