Comments (3)
Thank you. I haven't thought of that, but I could see how it could be useful. I might propose another way to retry logic using recursion and closures:
func getFile(url: String, attempt: Int, success:((HTTPResponse) -> Void), failure:((NSError, HTTPResponse?) -> Void)) {
var request = HTTPTask()
let downloadTask = request.download(url, parameters: nil, progress: {(complete: Double) in
println("percent complete: \(complete)")
}, success: {(response: HTTPResponse) in
success(response) //download was successful
} ,failure: {(error: NSError, response: HTTPResponse?) in
if attempt < maxAttempts { //maxAttempts could be your desired number of retries, 5, 10, etc
getFile(url, attempt+1,success, failure) //try again...
} else {
failure(error, response)
}
})
}
//now run it:
getFile("http://vluxe.io/assets/images/logo.png",0, success: {(response: HTTPResponse) in
//do stuff with the download...
} ,failure: {(error: NSError, response: HTTPResponse?) in
//sadness
})
I just threw this together, so not sure on total syntax accuracy, but the general idea should make sense. I would say this gives quite a bit of flexibility in the implementation and does require any changes at all 😄 .
from swifthttp.
That would work for now, thanks for the insight :)
from swifthttp.
👍
from swifthttp.
Related Issues (20)
- Count is unavailable: there is no universally good answer, see the documentation comment for discussion HOT 5
- HTTP.POST() not working after screen-lock (iOS 9.3.5)
- How to handler download progress?
- 'count' is unavailable: there is no universally good answer, see the documentation comment for discussion
- failed in xcode9.3
- Pinning Trusted certs or keys HOT 2
- POST method parameters lost in traffic
- Parameters not converted properly when using arrays HOT 2
- Cannot upload file
- Progress closure seems broken
- Post objects array to server
- Ambiguous use of 'init(urlString:parameters:headers:cachePolicy:timeoutInterval:)'
- Retry a task?
- Why OperationQueue support has been removed?
- SSL Pinning - Code=-999 "cancelled" HOT 1
- Linux support ?
- Timeout
- 'taskMap' Dictionary related crashes in Operation.swift file HOT 3
- Cannot consume as Swift package
- SSL Pinning - Always failing
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swifthttp.