与Hydra一起在诺言中兑现诺言

时间:2018-10-11 01:36:00

标签: ios swift asynchronous

注意:这个问题不是重复的-我要问的是特定框架的特定问题。

我正在尝试Hydra框架,但遇到一个问题,试图弄清楚如何处理希望从承诺主体中返回新承诺的情况。在下面的示例中,我如何等待一段时间然后再试一次,同时又保持最初的承诺?框架有一些方法,例如defer,validate等,但是在这里如何应用的技巧却暗示了我。

 func myPromiseFunc(request: URLRequest) -> Promise<Data?> {
    let token = InvalidationToken()
    return Promise(in: Context.background, token: token, { resolve, reject, operation in
        let task = self.session.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in
            if let error = error {
                reject(error)
            } else if let response = response as? HTTPURLResponse, response.statusCode == 999 {
                // Here is the issue - I want to wait 10 seconds and try again.
            } else {
                resolve(data)
            }
        }
        task.resume()
    })
}

0 个答案:

没有答案