Примечание. Этот вопрос НЕ является дубликатом - я спрашиваю о конкретной проблеме с определенной платформой.
Я пробую среду 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()
})
}