Вы делаете async
звонок. Fetch получает данные, но они не доступны сразу.
Вам нужно подождать, пока данные будут доступны. Внутри then
вы ждете, пока он будет доступен, и поэтому он работает.
Вы можете использовать async / asyn c, но кажется, что вы делаете вызов на уровне модуля, а это недоступно там. Вы должны переместить свой код для выполнения из обратного вызова обещания (затем метода).
То, что вы слышали о setTimeout
, является формой long polling
, вы можете реализовать ее примерно так:
const longPollCallback = () => {
if (currency_json) {
console.log(currency_json)
} else {
setTimeout(longPollCallback, 500)
}
}
setTimeout(longPollCallback, 500)
Но вы должны полагаться на then
, async/await
вместо длинного опроса.