Как действовать на функцию асинхронного делегата в Swift - PullRequest
0 голосов
/ 14 мая 2019

В настоящее время я использую внутренний SDK с делегированием в swift.

Текущий процесс выполнения действия

1.) Инициировать запуск, который вызовет делегата 2.) Мой реализованный метод делегата сделает вызов API для токена 3.) Токен затем используется для последующих запросов в моем действии.

Проблема, с которой я столкнулся, заключается в том, что я не могу передать замыкание / обратный вызов в процесс запуска, который, очевидно, является асинхронным, но тогда как мне ожидать завершения метода делегата внутри одной и той же функции?

Я думаю, что уведомления могут быть ответом, но я не быстрый ниндзя.

Итак ... (псевдокод)

func performAction() {

  internalSDK.start()
  // calls my implemented delegate
  // sets the token on self

  doActionUsingTheTokenRetrievedInMyDelegateMethod(token: self.token)
}

Такое ощущение, что мне нужно какое-то ожидание или наблюдателя, которого затем убирают в конце разговора.

Следует также отметить, что метод делегата является общим, поэтому я не могу реализовать код внутри самого метода.

1 Ответ

0 голосов
/ 14 мая 2019

Я бы попытался обойтись при помощи самых простых доступных инструментов, например, наблюдателя свойства в токене, например:

class Foo {
    var token: Token {
        didSet {
            doActionUsingTheTokenRetrievedInMyDelegateMethod(token: self.token)
        }
    }

    func performAction() {
      internalSDK.start()
      // calls my implemented delegate
      // sets the token on self
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...