破坏承诺的回应

问题描述

我正在研究诺言,并试图实现这样的目标。我有一个异步函数。

async function myFunc(): Promise<{ data: any }> {
    return new Promise((resolve,reject) => {
        resolve({ data: { item: "test" } })
    });
}

我想这样使用它:

const {data} = myFunc();

例如,useQuery在apollo客户端中的基本工作方式。

有什么办法可以做到这一点?我猜我已经偏离了轨道。我知道您可以使用then或catch,但是我特别希望遵循useQuery这样的模式。

解决方法

您可以在async函数中这样做:

const { data } = await myFunc();

或在非async函数中这样:

myFunc()
.then(({data}) => {
    // ...
})
// .catch here,probably

正如作为旁注,没有理由将functino显示为async。如果在函数中使用async,并希望它根据函数中发生的情况自动创建承诺,则只需要在函数中使用await。在函数中,不使用await,而是显式创建诺言。 (但这可能只是一个占位符...)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...