Мне нужно опрашивать API для ответа каждые 30 секунд в React
Я думал вызвать этот метод:
poll() {
setTimeout(() => {
console.info('polling') // would hit the API here
}, 100)
}
внутри componentDidMount, а затем внутри него тернар или что-то в этом роде
но в componentDidMount мне это не нравится
this.props.loading ? this.poll() : null
сказать что-то об ожидаемой функции, но увидел выражение (ошибка линтинга)
как я могу опросить API или это правильный способ сделать это?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, вам следует проверить props.loading внутри метода голосование(), таким образом:
poll () {
// you should keep track of the timeout scheduled and
// provide a cleanup if needed
this.state.polling && clearTimeout(this.state.polling)
if (!this.props.loading) {
this.setState({ polling: false })
return
}
const polling = setTimeout(() => {
// stuff here
// as last step you should call poll() method again
// if you have asyncronous code you should not call it
// as a step of your async flow, as it has already is
// time period with setTimeout
this.poll()
}
, this.state.pollingIntervall)
this.setState({
polling
})
}
Затем вам просто нужно вызвать метод голосование(), чтобы запустить его.
Добавил state.pollingIntervall, чтобы можно было настроить время опроса.
пожалуйста, поделитесь полным кодом с жизненным циклом и функцией конструктора