【问题标题】:Resolving a promise within a function [duplicate]解决函数中的承诺[重复]
【发布时间】:2020-06-21 16:15:20
【问题描述】:

我无法解决这个承诺。

const getAge = (actorId) => {
    return (
        axios.get(`https://api.themoviedb.org/3/person/${actorId}?api_key=${process.env.REACT_APP_API_KEY}&language=en-US`)
            .then(function (response) {
              return moment().diff(response.data.birthday, 'years')
            })
            .catch(function (error) {
              console.log(error);
            })
        )
    }

console.log(getAge('5000'), 'FUNCTION')

它永远不会解决承诺并返回待处理

我尝试了许多不同的想法,但似乎都没有奏效。我错过了什么?

谢谢

【问题讨论】:

  • 这就是应该发生的事情。异步函数总是返回一个 Promise。你不能用它来神奇地同步一个异步进程。
  • 我在您发布的代码中看不到任何解决问题的尝试。你可以添加那个代码吗?常见的方法包括回调、组合和异步/等待,但您永远不能从并发函数返回。如果不知道您要做什么,很难说哪种方法是最好的
  • 在 getAge(5000) 中添加 then 就可以了

标签: javascript reactjs promise jsx


【解决方案1】:

您需要调用.then 来获取值或将调用包装在异步函数中。例如:

getAge('5000')
  .then(val => console.log(val, 'FUNCTION'));

或者,用async 包装:

(async () => {
  const val = await getAge('5000');
  console.log(val, 'FUNCTION');
})();

【讨论】:

    猜你喜欢
    • 2018-07-29
    • 2019-05-09
    • 2016-08-19
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 2019-04-13
    • 2017-02-21
    • 1970-01-01
    相关资源
    最近更新 更多