将 onreadystatechange 回调设置为带参数的 const 箭头函数

Setting onreadystatechange callback to const arrow function w/ parameters

提问人:C.G.F 提问时间:11/7/2023 更新时间:11/7/2023 访问量:31

问:

我正在遵循 ajax 指南,并尝试将步骤 3 中的代码转换为使用 const. 声明的内容,但是,我的 readystatechange 回调一直被调用 1 readyState。

            const submit = document.getElementById("submit");

            const makeRequest = () => {
                console.log('in makeRequest')
                const httpRequest = new XMLHttpRequest();
                if (!httpRequest) {
                    alert('problem');
                    return false;
                }
                httpRequest.onreadystatechange = () => renderProfile(httpRequest);
                httpRequest.open('GET', 'https://api.github.com/users/kamranahmedse')
            }

            const renderProfile = (httpRequest) => {
                console.log('in renderProfile')
                if (httpRequest.readyState === XMLHttpRequest.DONE) {
                    if (httpRequest.status === 200) {
                        alert('working?');
                    } else {
                        alert('problem')
                    }
                } else {
                    console.log(httpRequest)
                }
            }

            submit.addEventListener('click', makeRequest)

将 OnReadyState 回调更改为箭头函数没有任何效果。我认为回调会立即被调用,因为它没有被存储为引用,但我不明白这是怎么回事。

JavaScript AJAX

评论

0赞 Kevin B 11/7/2023
对我来说看起来不错。它应该在适当的时间被调用。也许你对何时应该调用它的期望不正确?如果它被调用时使用 readyState 值...它必须以正确的方式被调用。
0赞 Kevin B 11/7/2023
也就是说,将它们更改为 const 和 arrow 函数会给您的代码库带来什么价值?
1赞 Quentin 11/7/2023
忘记发送请求
1赞 Barmar 11/7/2023
发送 AJAX 的现代方法是使用 Fetch API
0赞 Jaromanda X 11/7/2023
一种更现代的使用方式是使用 和 事件,而不是 - 除非你关心 DONE 以外的就绪状态(你不关心) - 但更好XMLHttpRequestloaderror.onreadystatechangefetch

答: 暂无答案