我可以在AppDelegate - application:didReceiveRemoteNotification
方法中使用PromiseKit吗?
我正在使用GCM从服务器推送通知。一旦应用程序收到通知,我想从服务器获取一些数据,解析它,按摩它然后使用Core Data保存它。
使用PromiseKit将步骤链接在一起,并且当您通过向下滑动TableViewController手动刷新数据时,它正常工作。但是,当我使用相同的逻辑来刷新来自服务器的推送通知的数据时,行为是不可预测的,有时执行会在firstly()
停止,有时它会执行几个then
块,然后什么都不执行。
基本上这就是我要做的事情:
func application( application: UIApplication,
didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {
firstly() {
// fetch data (JSON) from server
}.then {
// Parse the JSON
}.then {
// Sync the db (using Core Data)
}.then {
// Raise local Notification
}.error {
}
}
显然,在完成所有didReceiveRemoteNotification
之前看起来控件存在Promises
方法。
PromiseKit大师,有什么建议吗?我唯一能想到的是在没有PromiseKit的情况下重写代码以进行顺序操作。
答案 0 :(得分:1)
PromiseKit是一个异步库。
所有then
块都以异步执行。方法didReceiveRemoteNotification将在调用then块之前返回。
如果你想进行 synch 调用,你不应该使用promisekit!