Comments (3)
There's no need to use a semaphore (and using a DispatchSemaphore
is dangerous in Swift concurrency). Instead, you can use a Task
directly and call the completion handler.
func refresh(_ credential: Credential, for session: Session, completion: @escaping (Result<Credential, Error>) -> Void) {
Task {
let result await someAsyncAPI()
completion(result)
}
}
I have no plans to offer a duplicate API surface for Alamofire's protocols barring a deep need, given you can simply call the completions inside Task
s. If such a need does arise it could be considered, but I haven't seen any examples that don't work manually right now.
from alamofire.
Thank you for your time and for your answser.
In fact, I was using a semaphore in order to allow only one call to the refresh tokens API, so that other calls asking for a refresh would be in a waiting state. If I'm not wrong, in the example you provided, multiple tasks are possibly launched if they occurs during the refresh of the first call.
And if I want to acheive this, the someAsyncAPI
method should have a mechanism of allowing only one call at a time.
from alamofire.
Using Alamofire's AuthenticationInterceptor
should do that for you, otherwise there are many ways to structure such a wait so that it doesn't use unsafe constructs like a DispatchSemaphore
.
from alamofire.
Related Issues (20)
- Crash - CompositeEventMonitor.request<A>(_:didParseResponse:) HOT 1
- The macOS deployment target 'MACOSX_DEPLOYMENT_TARGET' is set to 10.10, but the range of supported deployment target versions is 10.13 to 14.2.99. (in target 'Alamofire macOS' from project 'Alamofire') HOT 1
- In Xcode's InspectorView, Signature's Kind is Unsigned HOT 1
- Crash on startup with Alamofire 4.9.1 HOT 1
- Cocoapods support for visionOS HOT 4
- Almofire SDK privacy details not reflecting in my project HOT 20
- Not possible to `validate` `WebSocketRequest`? HOT 2
- WebSocketRequest Should Support Validation
- Request for Alamofire Dependency Update to Support Privacy Manifest in AlamofireObjectMapper SDK HOT 1
- Build test target failed with release 5.9
- Significant delay before uploading large files with multipart HOT 3
- Validation()'s variants don't exist for WebSocketRequest
- Privacy manifest for iOS HOT 2
- Privacy Concerns calling systemUptime API HOT 17
- Version 5.9.1 AppStore Connect issues: ITMS-91065: Missing signature HOT 12
- EncodeIfPresent Doesn't Honor If An Optional is Present for URLEncodedFormEncoder HOT 1
- Undefined symbols for architecture arm64 HOT 1
- Not working on Xcode 15.3: cannot load module 'Alamofire' built with SDK 'iphonesimulator17.2' when using SDK 'iphonesimulator17.4" HOT 1
- Insecure Storage: Lacking Data Protection
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 alamofire.