使用带有承诺API的axios

我正在React应用程序中使用基于承诺的挂钩来从API提取异步数据。

我还使用基于承诺的http客户端Axios来调用API。

在另一个promise中使用基于promise的客户端是否是反模式?以下代码似乎无效。

ContentType
linnil22 回答:使用带有承诺API的axios

哦,天哪。我认为您对Promises的运作方式有根本的误解。 首先,axios默认已经返回了Promise。因此,getData的整个第一个功能可以简化为:

const getData = () => {
  const url = "/getData"
  return axios.get(url)
}

但是代码的本质似乎表明您想要一个可质疑的Promise-因此无论出于何种原因,您都可以检查其状态。以下是根据this snippet改编而成的示例:

function statusPromiseMaker(promise) {
  if (promise.isResolved) return promise
  let status = {
    pending: true,rejected: false,fulfilled: false
  }
  let result = promise.then(
      resolvedValue => {
        status.fulfilled = true
        return resolvedValue
      },rejectedError => {
        status.rejected = true
        throw rejectedError
      }
    )
    .finally(() => {
      status.pending = false
    })

  result.status = () => status
  return result
}

通过这种方式,您可以执行类似let thing = statusPromiseMaker(getData())的操作,如果您查找thing.status.pending,则会得到truefalse等...

我实际上并没有执行上面的操作,我可能忘记了一两个括号,但是希望这会有所帮助。

我必须承认-我还没有见过像在野外使用过的东西。我很想知道您实际上是想以此完成什么。

本文链接:https://www.f2er.com/2668643.html

大家都在问