为什么该函数调用抛出“等待仅在异步函数中有效”的语法错误,即使该函数是异步的?

时间:2020-08-15 10:39:11

标签: javascript ecmascript-7

有一个loadJson函数,它返回Firebase链接的Json

async function loadJson(url) {
    let response = await fetch(url)
    let data = await response.json()
    return data
}

我正在尝试将loadJson()的值分配给此变量,并在promise中使用它。

let indexJSON = await loadJson(url)

indexJSON.then(() => {      
    // some code
})

但是为什么这段代码会引发以下错误?

Uncaught SyntaxError: await is only valid in async function

2 个答案:

答案 0 :(得分:3)

您的问题是您的await在这里:

let indexJSON = await loadJson(url)

indexJSON.then(() => {      
    // some code
})

如果您希望promise调用不带await的函数:

let indexJSON = loadJson(url)
indexJSON.then(...)

答案 1 :(得分:1)

您可以使用IIFE并使用async-await,否则可以使用then来评估诺言。

(async () => {
  let indexJSON = await loadJson(url)
  console.log(indexJSON);
})()