注意:这个问题不是重复的-我要问的是特定框架的特定问题。
我正在尝试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()
})
}