Мое намерение состоит в том, чтобы сократить время ожидания пользователей при переходе на экран, который требует данных от API.
В настоящее время это что-то вроде этого, где fetchSomeData
возвращает обещание:
// Screen 1
this.navigateToScreenTwo()
// Screen 2
async componentDidMount(){
try {
const data = await fetchSomeData()
this.setState({ data })
} catch(e){}
}
Что я хочу сделать, так это запустить обещание, передать его на следующий экран в состоянии навигации и затем дождаться его результата на следующем экране. Поскольку переход по экрану занимает 300 мс, этого времени достаточно для получения результата от API, что делает переход и загрузку данных плавными.
Является ли хорошей практикой делать что-то подобное? Если нет, то какой будет лучший способ сделать это?
// Screen 1
const dataPromise = fetchSomeData() // purposely without await
this.navigateToScreenTwo({ dataPromise }) // pass promise in navigation
// Screen 2
async componentDidMount(){
try {
const data = await this.navigation.dataPromise // the promise from navigation state
this.setState({ data })
} catch(e){}
}
Менее важно: должна ли быть попытка / уловка на экране 1, где обещание впервые возвращается?