为什么我的异步函数返回得太快?

ada*_*opp 1 javascript node.js async-await

我正在尝试使用异步函数来调用另一个函数内的函数。它看起来像这样:

const getConnectionsWithEmailsHash = async () => {
    const connectionsWithEmails = await parseConnections('./tmp/connections.csv') 
    console.log(connectionsWithEmails)
    return connectionsWithEmails
}

const connectionsWithEmailsHash = getConnectionsWithEmailsHash()
console.log(connectionsWithEmailsHash) 
Run Code Online (Sandbox Code Playgroud)

当我在异步函数中使用 console.log() 时,我得到了我期望的哈希值,但是当我在 console.log() 中调用异步函数的结果时,我得到了未决的承诺。我虽然异步函数的重点是它在调用时等待承诺得到解决,所以我做错了什么?

T.J*_*der 5

async函数返回承诺。这一行:

const connectionsWithEmailsHash = getConnectionsWithEmailsHash()
Run Code Online (Sandbox Code Playgroud)

...只是设置connectionsWithEmailsHash为函数返回的承诺。要实际获得承诺的分辨率值,您需要:

  1. await在另一个async函数中使用(如果这意味着async在顶层使用,请参阅:如何在顶层使用 async/await?):

    const connectionsWithEmailsHash = await getConnectionsWithEmailsHash()
    
    Run Code Online (Sandbox Code Playgroud)

    或者,

  2. 使用then承诺

    getConnectionsWithEmailsHash()
    .then(connectionsWithEmailsHash => {
        // ...use `connectionsWithEmailsHash`....
    })
    .catch(error => {
        // ...handle error...
    })
    
    Run Code Online (Sandbox Code Playgroud)