Reactjs TypeScript异步/等待箭头函数:正确语法(在React中)
我有一个箭头函数,它比较两个值。 一个值来自另一个函数,该函数从API端点获取该值。 我想使用wait/async样式而不是Promises(.then、.catch、.finaly) 在JavaScript中这很容易,但是我在使用TypeScript时遇到了一些问题。如何正确编写该函数 我有这样的东西(伪代码): 使用该代码,IDE需要第一行:类型“()=>Promise”缺少类型“Promise”中的以下属性:然后,catch,[Symbol.toStringTag]Reactjs TypeScript异步/等待箭头函数:正确语法(在React中),reactjs,typescript,asynchronous,async-await,Reactjs,Typescript,Asynchronous,Async Await,我有一个箭头函数,它比较两个值。 一个值来自另一个函数,该函数从API端点获取该值。 我想使用wait/async样式而不是Promises(.then、.catch、.finaly) 在JavaScript中这很容易,但是我在使用TypeScript时遇到了一些问题。如何正确编写该函数 我有这样的东西(伪代码): 使用该代码,IDE需要第一行:类型“()=>Promise”缺少类型“Promise”中的以下属性:然后,catch,[Symbol.toStringTag] 而编译器告诉:类型“P
而编译器告诉:类型“Promise”不可分配给类型“()=>Promise”。 类型“Promise”与签名“():Promise”不匹配。TS2322 我有一种感觉,我的返回类型是错误的 代码是否将我的
isEqual
值包装成承诺?我可以避免两个函数都是异步的吗?
正确的语法是什么
提前谢谢你 @VLAZ发现了错误,并在评论中解释得很好。 我仍然想发布一个有新变化的版本 我将第一段代码更改为:
compareValues: = async () => {
try {
const value1 = false;
const value2 = this.getValue2;
const isEqual = (await value2) === value1;
return isEqual;
} catch (error) {
throw error;
}
}
原因(在注释中解释):compareValues拥有一个函数,调用该函数时将产生一个承诺。它本身不是一个实际的承诺。
compareValues:Promise
应该是compareValues:()=>Promise
——毕竟compareValues
拥有一个调用时会产生承诺的函数。现在这不是一个真正的承诺。如果您需要承诺本身,则需要调用函数。谢谢!这就是问题所在!我刚刚将compareValues:Promise=async()=>{
更改为compareValues=async()=>{
,它正在工作。
getValue2 = async () => {
try {
const value2 = await axios.get(url, config);
const value2Data = await value2.data;
return value2Data;
} catch (error) {
throw error;
}
export interface IInterface {
compareValues: () => Promise<boolean>;
}
const initialState: IInterface = {
compareValues: () => {
return Promise.resolve(false);
}
}
compareValues: = async () => {
try {
const value1 = false;
const value2 = this.getValue2;
const isEqual = (await value2) === value1;
return isEqual;
} catch (error) {
throw error;
}
}