Muszę wykonać akcję zgodnie z odpowiedzią za pomocą statusu kodu pobierania. Jeśli dostałem status kodu 200, Window.BeForeunload powinien działać. Inaczej window.beForeunload nie powinien działać.

Oto mój kod

let codeStatusGeneral = 200;
const handleFetch = async () => {
    try {        
        const maReponse = await fetch(`a string`)
            .then(function (response) {
                codeStatusGeneral = response.status;
                return response;
            })
        if (codeStatusGeneral === 200) {
            console.log(403)            
            const recuperation = await maReponse.json();                
        }
        if (codeStatusGeneral === 403) {
            console.log(403)
        }
        if (codeStatusGeneral === 400) {
            console.log("I am DEAD")
        }
        
    } catch (e) {
        
    } finally {
         console.log("finish")
    }
}

handleFetchRefresh = ()=>{
 window.location.reload();
}

if (codeStatusGeneral===200) {
    window.addEventListener("beforeunload", function (e) {
        //many actions
        for (var i = 0; i < 500000; i++) { }
        return undefined;
    });

return (
        <>
            <Button onClick={handleFetch}>
                Fetch
            </Button>
            <Button onclick={handleFetchRefresh}>
                Refresh
            </Button>
        
        </>
    )

} `

Zrobiłem wiele konsoli.log, zauważam, że transformacja CodestatusGeneral w 200 podczas odświeżania. Dlatego zawsze weryfikuje mój "jeśli". Ale to nie oczekiwałem. Proszę pomóż mi. Z góry dziękuję. Z poważaniem.

0
newStudentIT 26 październik 2020, 14:28

1 odpowiedź

Najlepsza odpowiedź

Odpowiedz sobie, nie możemy używać bezpośrednio, jeśli jest to warunek o wartości podczas inicjalizacji. W przeciwnym razie przyniesie pierwszą wartość bez podjęcia zmian

0
newStudentIT 26 październik 2020, 12:11