Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs TypeScript异步/等待箭头函数:正确语法(在React中)_Reactjs_Typescript_Asynchronous_Async Await - Fatal编程技术网

Reactjs TypeScript异步/等待箭头函数:正确语法(在React中)

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

我有一个箭头函数,它比较两个值。 一个值来自另一个函数,该函数从API端点获取该值。 我想使用wait/async样式而不是Promises(.then、.catch、.finaly)

在JavaScript中这很容易,但是我在使用TypeScript时遇到了一些问题。如何正确编写该函数

我有这样的东西(伪代码):

使用该代码,IDE需要第一行:类型“()=>Promise”缺少类型“Promise”中的以下属性:然后,catch,[Symbol.toStringTag]
而编译器告诉:类型“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;
   }
}