Swift - didReceiveRemoteNotification - PromiseKit

时间:2016-01-29 15:15:38

标签: ios swift promisekit

我可以在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的情况下重写代码以进行顺序操作。

1 个答案:

答案 0 :(得分:1)

PromiseKit是一个异步库。

所有then块都以异步执行。方法didReceiveRemoteNotification将在调用then块之前返回。

如果你想进行 synch 调用,你不应该使用promisekit!