与异步JavaScript代码作斗争

我试图让这个函数异步调用 API 并返回响应的 JSON。但是,在 API 调用返回并填充 之前,该函数不返回任何内容res

我对在这个用例中正确使用异步 JavaScript 感到困惑。

根据我的理解,一旦async在函数中声明,代码就会在遇到 an 时暂停,await直到await返回一个 promise。但显然情况并非如此。我错过了什么?

        let queryApi = async (query) => {
            const url = "http://localhost:3000/test";
            const response = await fetch(url)

            const res = await response.json();
            return res;
        }

谢谢朋友!

回答

是的,这就是 Promise 的工作方式。您必须从异步设置或顶级模块调用异步代码。因此,假设您有以下代码(已调整)。

let queryApi = async (query) => {
    const response = await fetch(query);
    const res = await response.json();
    return res;
}

你可以这样称呼它:

let result = await queryApi('https://www.example.com');
console.log(result);

它必须在异步函数内或在<script type='module'></script>.


以上是与异步JavaScript代码作斗争的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>