2016-10-13 5 views
0

Я хочу асинхронно загружать некоторые данные при запуске приложения и использовать загруженные данные с контроллера представления, который представлен позже в потоке приложений.Ждать обещания вернуть

Как определить, загружены ли данные и, если нет, как я могу ждать загрузки?

Так что если в приложении AppDelegate код ... _ = service.LoadData(), и это возвращает обещание, как бы диспетчер просмотра узнал, вернули ли обещание или нет?

Добавление нового .then звонок в конце обещания, несомненно, не будет работать, если обещание уже возвращено.

+0

Мы не можем создать 'завершениеHandlers' i.e.' closures' –

+0

Да, но вы не знаете, завершена ли задача или нет. Если его закончить, то закрытие завершения не будет вызвано. –

+0

Я думаю, что единственный способ позволить вашему «ViewController» знать - добавить наблюдателя в ваш «ViewController» и запустить уведомление, как только появится обещание. Используйте «NSNotificationCenter» –

ответ

0

Вызов .then по разрешенному обещанию, похоже, приводит к немедленному вызову закрытия. Поэтому я просто сохраняю обещание от первоначального запроса, а затем добавляю к нему новый .then. Если данные загружены, то он возвращается немедленно, иначе, надеюсь, он будет ждать.

Смежные вопросы