【问题标题】:Trouble with axios returning promise objectaxios返回promise对象的问题
【发布时间】:2020-04-30 12:33:30
【问题描述】:

我想这很简单,但我在获得正确响应时遇到了一些麻烦。我的代码返回的是 promise 对象,而不是值。

我的 axios 调用是这样的:

export const myFunc = async (hash: string) => {
    return axios.get(`${url}/${path}?hash=hash`)
        .then((response: any) => {
            console.log('my response: ', response.data) // {key: value} as expected
            return response.data
        })
}

我从另一个文件中调用它

const xy = async (c: string) => {
    return myFunc(c)
}

console.log('result of xy(): ' xy('some hash')) // result of xy(): { Promise <pending> } <--- ????

如果我 .toString() 它,因为我很生气(我想我有一些理由为什么在某一时刻但我不记得那是什么),我得到 ​​p>

result of xy(): [object Promise]

我用谷歌搜索过,我的堆栈溢出了,现在我要问这个问题,因为到目前为止我发现的东西并不完全有效。

感谢您的帮助

【问题讨论】:

  • JavaScript 是一种高度异步的语言。处理异步操作有不同的方法,比如早期流行(并且仍然存在)和现在的回调,Promises
  • 我正在使用上面的异步函数,当我添加等待时(return await axios.get...return await myFunc... 我得到相同的结果。我可以尝试显式的承诺语法,但我们希望移动从那到整个代码中的异步等待。@EmileBergeron
  • 你无法摆脱 Promise,async/await is just syntactic sugar on top of Promises。在某些时候,你将不得不处理 JS 的异步特性,所以你最好今天就学习它;)

标签: javascript reactjs typescript axios


【解决方案1】:

明确的承诺语法解决了这个问题。我确定我错过了一些非常简单的东西。非常感谢@EmileBergeron。但是我们也决定数据不需要在静态时加密,因此通过将这些非敏感数据存储在未加密状态,我们不再需要单独进行静态调用来解密哈希并且不需要一开始就担心会在额外的承诺中工作。

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 2016-12-27
    • 2019-05-08
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多