Актор токенов делает три запроса обновления, хотя данные в нём защищены
actor TokenStore {
private var token: String?
func validToken() async throws -> String {
if let token { return token }
let new = try await api.refreshToken() // 1 секунда
token = new
return new
}
}
При старте три экрана одновременно вызывают validToken(). На сервер уходят три запроса обновления, два последних получают ошибку: refresh-токен одноразовый. Разве актор не выполняет вызовы по очереди?
- На await актор принимает другие вызовы
- Актор параллелит вызовы с разных экранов
- Свойство token нужно пометить nonisolated
- Актор создаётся заново на каждом экране
