2016-10-13 177 views
0

我想在應用程序啓動時異步加載一些數據,並使用稍後在應用程序流中呈現的視圖控制器中加載的數據。等待承諾退還

如何確定數據是否已加載,如果尚未加載,如何等待加載?

所以,如果在AppDelegate中的代碼是... _ = service.LoadData(),這將返回一個承諾,視圖控制器如何知道承諾是否已經返回?

將新的.then調用添加到承諾的結尾肯定不會工作,如果承諾已經返回。

+0

我們不能創建'completionHandlers',即'closures' –

+0

是的,但是你不知道任務是否完成。如果它完成了,那麼完成關閉將不會被調用。 –

+0

我認爲讓你的ViewController知道的唯一方法就是在你的ViewController中添加一個觀察者,並在promise返回時立即觸發一個通知。使用'NSNotificationCenter' –

回答

0

根據已解決的承諾調用.then似乎會導致立即調用閉包。因此,我只是將初始查詢的承諾存儲起來,然後每當添加一個新的.then時。如果數據被加載,它立即返回,否則,希望它會等待。