返回承诺而不是数据

时间:2020-09-28 09:52:24

标签: javascript node.js axios

在下面编写的从API获取数据的代码中,我获得了Promise作为输出而不是数据的信息。我想念什么?有人可以帮忙吗?

const axios = require('axios');

const ageFinder = async (userName) => {

    try {
        let userDetails =await axios.get(`https://hacker-news.firebaseio.com/v0/user/${userName}.json`)
        let user =userDetails.data
        return user
    } catch(err) {
        console.log(err.message)
    }
}

console.log(ageFinder("someUser"))

2 个答案:

答案 0 :(得分:0)

根据MDN page on async functions,任何声明为async的函数都将返回一个promise,它将解决函数returns的任何问题,或者在函数中遇到任何错误时将其拒绝(请参见“返回值”部分(位于上面链接的页面)。

因此,您需要在登录之前将函数调用ageFinder("someUser")放在另一个异步函数中,并将其结果await放在日志中,否则您可以使用.then()

答案 1 :(得分:0)

async函数始终返回承诺。要使用它,您需要在另一个await函数中async。如果您不想在另一个await函数中使用async,则可以将其与其他then方法一起使用。例如:

ageFinder("someUser")
.then((response) => {
  console.log(response);
}).
.catch((err) => {
  console.log(err);
});