Reactjs 在TypeScript中对异步/等待调用排序

Reactjs 在TypeScript中对异步/等待调用排序,reactjs,typescript,async-await,ecmascript-2016,Reactjs,Typescript,Async Await,Ecmascript 2016,我有以下代码片段。我面临一个问题,有时序列不受尊重,即在doSomethingFirst()之前调用_doSomethingNext() { executeInSequence(); } } /> private executeInSequence():void{ 这个。_fun1()。然后(()=>{this。_fun2();}); } 私有异步函数fun1():void{ const result:IResultArray[]=await httpClient1.getData(); 如果

我有以下代码片段。我面临一个问题,有时序列不受尊重,即在doSomethingFirst()之前调用_doSomethingNext()

{
executeInSequence();
}
}
/>
private executeInSequence():void{
这个。_fun1()。然后(()=>{this。_fun2();});
} 
私有异步函数fun1():void{
const result:IResultArray[]=await httpClient1.getData();
如果(!结果){
这个。_doSomethingFirst();
}
}
私有异步_fun2():void{
const result:IResultArray[]=等待httpClient2.getData();
如果(!结果){
这个._doSomethingNext();
}
}

知道为什么会发生这种情况吗?我如何确保序列和单个调用等待对getData()的调用。

您应该有这样的return语句和async关键字

private async _fun1( ) {
  const result: IResultArray[] = await httpClient1.getData ();
    if (!result) {
        return this._doSomethingFirst();
    }
}

private async _fun2( ) {
  const result: IResultArray[] = await httpClient2.getData ();
    if (!result) {
        return this._doSomethingNext();
    }
}



可能是因为您没有从
\u fun1
\u fun2
返回任何内容?\u fun1和\u fun2还需要是
异步
函数才能使用
等待
keyword@AluanHaddad这绝对是真的。不能在未声明为
async
的函数中使用
wait
关键字,因为它会导致语法错误。我不知道你是从哪里得到你的信息的,但是请多读一些对不起,我误读了你的评论。出于某种原因,我以为你是说只有异步函数才能被调用awaited@AluanHaddad这更有意义,很抱歉做出如此严厉的回应,但如果有人读了这篇文章,然后开始尝试在未声明为
async
的函数中使用
await
,那就不好了,我假设即使fun1(),代码片段也是有效的,doSomethingFirst()和doSomethingNext()都是用void返回类型声明的。我错过了void返回类型@Tarun,我将进行更改
private async _fun1( ) {
  const result: IResultArray[] = await httpClient1.getData ();
    if (!result) {
        return this._doSomethingFirst();
    }
}

private async _fun2( ) {
  const result: IResultArray[] = await httpClient2.getData ();
    if (!result) {
        return this._doSomethingNext();
    }
}