JS Получить значение из Promise
Делаю запрос на сторонний сервер с помощью fetch (т.к. XMLHttpRequest не работает для Cross Domain Requests), после чего пытаюсь вытащить значение из промиса, чтобы сравнить его и, в зависимости от результата сравнения, вернуть ответ, но ничего не получается.
Что пробовал (Vanilla JS):
const data = {
status: null // Сюда необходимо сохранить значение, которое вернется из Promise
}
async function getData() {
const request = await fetch('https://somesite.ru/api', {mode: 'no-cors'})
const response = await request.json()
return response
}
getData().then(result => {
data.status = result
})
// В data.status будет null и switch сработает некорректно
switch(data.status) {
case 1:
doSomething();
break
case 2:
doAnythin();
break;
default:
showWarning();
break;
}
React JS:
import {useState} from "react"
function Home() {
const [status, setStatus] = useState(null)
useEffect(() => {
fetch('https://third-party-service.ru/api', {mode: 'no-cors'}).then((result) => {
result.json().then(data => {
console.log(data.status)
setStatus(data.status)
})
})
}, [])
return (
<div>
{status == 1 ? <FirstView status={status} /> : <SecondView status={status} />}
</div>
)
}
Как можно синхронизировать Promise и основной поток? Или передать значение из Promise в data.status и сделать это последовательно? Есть ли какой-нибудь механизм синхронизации потоков (Promise)?