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)?


Ответы (0 шт):