2016-12-21 15 views
2

Google Places API를 통해 React Native의 일부 위치가 지정된 '장소'를 모두 가져 오려고합니다. 문제는 API를 처음 호출 한 후 Google에서 20 개 항목 만 반환 한 다음 next_page_token을 반환하고 동일한 API 호출 url에 추가해야한다는 것입니다. 그래서, 다음 20 개의 위치를 ​​바로 잡으라는 또 다른 요청을합니다. 그러나 토큰이 실제로 유효해질 때까지 약간의 지연 (1 ~ 3 초)이 있습니다. 따라서 요청이 잘못되었습니다.React-Native의 수면 기능은 무엇입니까?

나는 일을 시도 :

this.setTimeout(() => {this.setState({timePassed: true})}, 3000); 

그러나 완전히 응용 프로그램에 의해 무시됩니다 ... 어떤 제안?

업데이트

내가 (물론 변수를 정의한 후) 내 componentWillMount 기능에서이 작업을 수행, 오른쪽이 선 후 setTimeout를 호출합니다.

axios.get(baseUrl) 
.then((response) => { 
    this.setState({places: response.data.results, nextPageToken: response.data.next_page_token }); 

}); 
+0

코드를 좀 더 보여줄 수 있습니까? – Chase

+0

어디에서 setTimeout()을 호출합니까? – abeikverdi

+0

@Chase가 질문을 업데이트했습니다. 미안하지만. – LukeCage

답변

3

내가 이해 한 것은 다른 가져 오기 결과를 기반으로 가져 오기를 시도하고 있다는 것입니다. 그래서, 당신의 솔루션은 TimeOut을 사용하여 요청이 끝나고 다른 요청을 할 때를 추측하는 것입니다. 맞습니까?

예인 경우 문제 해결에 최선의 해결책이 아닐 수도 있습니다. 가져 오기가 완료 될 때까지 귀하의 경우에는, 그때, 다른 매개 변수를 다시 가져 동일하게 콜백을 사용 기다려야

// Without "this" 
setTimeout(someMethod, 
    2000 
) 

내가 걸릴 접근 방식은 다음과 같습니다 그러나 다음 코드는 내가 시간 제한을 사용하기 위해 수행하는 방법이다 , nextPageToken. ES7 비동기 &을 사용하여이 작업을 수행합니다.

// Remember to add some stop condition on this recursive method. 
async fetchData(nextPageToken){ 
    try { 
     var result = await fetch(URL) 
     // Do whatever you want with this result, including getting the next token or updating the UI (via setting the State) 
     fetchData(result.nextPageToken) 
    } catch(e){ 
     // Show an error message 
    } 
} 

나는 오해가 있거나 질문이 있으시면 언제든지 물어보십시오!

도움이되기를 바랍니다.

+0

setTimeout (someMethod, 2000)이어야합니다. – cbartondock

+0

맞습니다! 이것을 알아 줘서 고마워. –