А как насчет следующего?Я использовал docs для справки, похоже, нет необходимости использовать OverlayBaseController
или Loading
.
import { LoadingController } from '@ionic/angular';
async loading<T>(action: Promise<T>, loadingMessage?: string): Promise<T> {
const loader = await this.loadingCtrl.create({
message: loadingMessage
});
await loader.present().catch(this.log.warn);
try {
const result: T = await action;
loader.dismiss();
return result;
} catch (e) {
loader.dismiss();
throw e;
}
}
Я удалил комментарий о задержке.Комментарий кажется устаревшим и запутанным, поскольку нет возможности отложить загрузку экрана ...
Я также перешел с let
на const
, когда это возможно, но это не должно повредить функциональности.
Также было бы неплохо обработать случай, если loadingMessage
не определено.Может быть, вы могли бы показать общее сообщение типа Пожалуйста, подождите ... Это можно сделать с помощью параметра по умолчанию.Поэтому вам придется изменить подпись следующим образом:
async loading<T>(action: Promise<T>, loadingMessage = 'Please wait ...'): Promise<T>
Для получения дополнительной информации о параметрах по умолчанию вы также можете проверить документы Typescript .