freshOS / Then

:clapper: Tame async code with battle-tested promises
MIT License
993 stars 77 forks source link

.progress should be able to return Progress, not Float #55

Open subdiox opened 5 years ago

subdiox commented 5 years ago

Currently, this library can only return Float value when using .progress directive. However, Alamofire and other network libraries return Progress instance instead of Float.

I think thenPromise should be able to return Progress instance on .progress directive. For example:

return Promise<URL> { resolve, reject, progress in
    Alamofire.download(escapedUrl, to: destination)
        .downloadProgress { downloadProgress in // downloadProgress is Progress class
            // let currentProgress = Float(downloadProgress.completedUnitCount) / Float(downloadProgress.totalUnitCount)
            // progress(currentProgress)
            progress(downloadProgress) // <- should be able to write like this
        }
        .response { response in
            ...
        }
}
s4cha commented 4 years ago

@subdiox Thanks for the suggestion, I wasn't very familiar with the Progress object. This seems like a good addition to me.