Swift - 使用PromiseKit

时间:2017-12-06 19:05:02

标签: ios swift design-patterns promisekit

我一直在项目中使用PromiseKit进行异步请求处理,我的目标是在请求失败时向用户显示登录屏幕。对第一个失败的请求做出反应,删除访问令牌并显示登录屏幕不是问题。问题是多个请求可能同时失败,在用户输入新凭据之前,越来越多的请求开始失败。

我的预期行为是,一旦请求失败,其他请求将暂停/等待,直到登录返回有效的promise并且执行它们为止。

如果有人能为我提供指导,那将非常有帮助。我目前正在考虑这样的解决方案:

func login() -> Promise<Void> {
    return Promise { fulfill, reject in
        // Tries to present the login screen.
        // Fulfill 
        //  - accessToken already stored in Preferences
        //  - OR
        //  - successful API call
        // Reject 
        //  - if the login screen is being already presented 
        //  - OR
        //  - failure on API call
    }
}

func get(endpoint: Endpoint, params: Params,...) -> Promise<AnyObject> {
    // Get API results and error
    switch error {
    case .Unauthorized:
        // Delete the accessToken from Preferences
        return login().then {
           // Retry the request
        }
    default:
        throw error
    }
}

0 个答案:

没有答案