Ошибка IONIC3 для IOS - UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство 'attrib' с нулевым значением

public void TryThreeTimes(Action action)
{
    var tries = 3;
    while (true) {
        try {
            action();
            break; // success!
        } catch {
            if (--tries == 0)
                throw;
            Thread.Sleep(1000);
        }
    }
}

Затем вы вызывали бы:

TryThreeTimes(DoSomething);

... или альтернативно ...

TryThreeTimes(() => DoSomethingElse(withLocalVariable));

Более гибкая опция:

public void DoWithRetry(Action action, TimeSpan sleepPeriod, int tryCount = 3)
{
    if (tryCount <= 0)
        throw new ArgumentOutOfRangeException(nameof(tryCount));

    while (true) {
        try {
            action();
            break; // success!
        } catch {
            if (--tryCount == 0)
                throw;
            Thread.Sleep(sleepPeriod);
        }
   }
}

Используется как:

DoWithRetry(DoSomething, TimeSpan.FromSeconds(2), tryCount: 10);

Более современная версия с поддержкой async / await:

public async Task DoWithRetryAsync(Func<Task> action, TimeSpan sleepPeriod, int tryCount = 3)
{
    if (tryCount <= 0)
        throw new ArgumentOutOfRangeException(nameof(tryCount));

    while (true) {
        try {
            await action();
            return; // success!
        } catch {
            if (--tryCount == 0)
                throw;
            await Task.Delay(sleepPeriod);
        }
   }
}

Используется как :

await DoWithRetryAsync(DoSomethingAsync, TimeSpan.FromSeconds(2), tryCount: 10);
0
задан Hitesh Bansi Ramnathkar 15 January 2019 в 09:53
поделиться

1 ответ

Попробуйте снова удалить и добавить платформу IOS.

ionic cordova platform remove ios
ionic cordova platform add ios
0
ответ дан allard 15 January 2019 в 09:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: