2016-11-28 5 views
3

Moya을 사용하여 HTTP 작업을 처리하고 일반적으로 refreshToken()이 있습니다. 만료되었거나 요청이 발생하는 경우 토큰을 확인하지만 문제는 둘 이상의 요청이있는 시나리오가있을 수 있음을 나타냅니다. 그들이 중첩 된 타입으로 묶여 있다면 그것은 문제가되지 않지만 항상 그렇지는 않습니다.모든 끝점에서 하나의 정확한 끝점을 대기하게하십시오.

더 명확하게하려면 내가 request1()request2()을 가지고 있고 별도의 작업을 실행하고 (다른 하나가 다른 viewDidLoad()에서라고 예를 하나에 대한 viewDidLoad()에서라고합니다) 언제 트리거 될 수 있다고 가정 말할 수 있습니다. 이런 일이 발생하고 토큰이 만료되면 새로 고침 요청이 실패합니다. (statusCode: 400) 그럼, 내 질문은, 내가 어떻게 공급자가 다른 끝점을 의미 refresh() 작업을 기다릴 수 있도록 할 수 있습니다. 그들이 켜져 있으면 refresh() 종점을 기다리고 싶습니다.

이렇게 쉽게 만드는 방법을 제안하면 매우 감사하겠습니다.

+0

요청을 호출하기 전에 매번 새로 고침 토큰이 만료되었는지 확인하고 싶습니다. 그럴 경우 서비스를 통해 새로 고침 토큰을받은 다음 요청을하십시오. 확실하게, 이것은 정확히 당신이 찾고있는 것입니까? 그렇다면 클로저와 새로 고침 토큰에 대한 글로벌 (bool) 값을 사용하여 수행 할 수 있습니다. – KrishnaCA

+0

모든 요청 전에 새로 고침 토큰이 만료되었는지 여부를 이미 확인하고 있습니다. 그러나 네트워크 운영자의 관리자가 비동기이기 때문에 약간의 시간에 두 가지 요청이 이루어지며 별도로 토큰을 새로 고치라는 요청을합니다. 이것의 결과로, 나는 두 번째 것에서 400을 얻는다. 나는 그저 해결책을 찾고있다. – Faruk

답변

0

refresh() 작업을 시작할 때 isTokenRefreshing이라는 변수를 true로 설정하고 요청하기 전에 확인했습니다. 사실이라면 배열의 모든 요청을 저장하고 refresh()이 완료되면 기본적으로 저장된 요청을 모두 for loop에 작성하는 또 다른 기능을 실행했습니다.

누군가 공유 할 수있는 코드를보고 싶다면. 바로 알려주세요.