Возвращение обещания в обещании с Гидрой - PullRequest
0 голосов
/ 11 октября 2018

Примечание. Этот вопрос НЕ является дубликатом - я спрашиваю о конкретной проблеме с определенной платформой.

Я пробую среду 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()
    })
}
...