Javascript JS等待函数,直到它接收到数据

Javascript JS等待函数,直到它接收到数据,javascript,angular,asynchronous,Javascript,Angular,Asynchronous,当涉及到首字母缩略词方法时,我总是被卡住,因为我在体验代码中的一些问题。希望你们能帮助我 所以基本上,我在onInit上有两个功能;但是,当“fetchSalesbyDay2”运行时,this.firstResponse接收未定义的响应,并且不保存来自“fetchSalesbyDay1”的第一个响应 我希望,一旦“fetchSalesbyDay1”完成,并且this.firstResponse已经有了一个值,“fetchSalesbyDay2”就可以执行了。 解决这个问题的最佳方法是什么?您不需

当涉及到首字母缩略词方法时,我总是被卡住,因为我在体验代码中的一些问题。希望你们能帮助我

所以基本上,我在onInit上有两个功能;但是,当“fetchSalesbyDay2”运行时,this.firstResponse接收未定义的响应,并且不保存来自“fetchSalesbyDay1”的第一个响应

我希望,一旦“fetchSalesbyDay1”完成,并且this.firstResponse已经有了一个值,“fetchSalesbyDay2”就可以执行了。
解决这个问题的最佳方法是什么?

您不需要对可观察对象使用
async/await
。如果您想在响应到来后执行另一个函数,只需在subscribe after属性赋值中执行它,如下所示:

.subscribe((response: any) => {
    this.firstResponse = response;
    this.fetchSalesByDay2();
});


您可以删除所有
async/await

您不需要对可观察对象使用
async/await
。如果您想在响应到来后执行另一个函数,只需在subscribe after属性赋值中执行它,如下所示:

.subscribe((response: any) => {
    this.firstResponse = response;
    this.fetchSalesByDay2();
});


您可以删除所有
async/await

而无需更改代码。您可以在提取函数之外添加wait,如下所示:

fetchSales = async () => {
   await fetchSalesbyDay1();
   await fetchSalesbyDay2();
}

这样,fetchSalesbyDay2()将等待第一个函数完成。

在不更改代码的情况下,您可以在fetch函数外部添加wait,如下所示:

fetchSales = async () => {
   await fetchSalesbyDay1();
   await fetchSalesbyDay2();
}

通过这种方式,fetchSalesbyDay2()将等待第一个完成。

基本上没有理由将可观察的内容转换为承诺。Observable提供了更好的组合异步数据的选项。在这种特定情况下,您可以使用RxJS函数来组合这两个观察值

试试下面的方法

从'rxjs'导入{forkJoin,Observable};
ngOnInit():void{
forkJoin({//{
这个.显示和处理工作日数据(第一个、第二个);
},
错误:错误=>{
console.log(错误);
//处理错误
}
});
}

fetchSalesbyDay1():Observable{/基本上没有理由将Observable转换为promises。Observable提供了更好的选项来组合异步数据。在这种特定情况下,您可以使用RxJS函数来组合这两个Observable

试试下面的方法

从'rxjs'导入{forkJoin,Observable};
ngOnInit():void{
forkJoin({//{
这个.显示和处理工作日数据(第一个、第二个);
},
错误:错误=>{
console.log(错误);
//处理错误
}
});
}

fetchSalesbyDay1():可观察的{/
this.fetchSalesbyDay1()。然后(()=>this.fetchSalesbyDay2())
您需要使用RxJs运算符组合两个响应。如果只有第二个响应对您的组件很重要,您可以使用mergeMap,如果您需要两个响应来处理您的数据,您应该使用类似CombineTest的东西。看看这是否回答了您的问题?
this.fetchSalesbyDay1()。然后()=>this.fetchSalesbyDay2())
您需要使用RxJs运算符组合两个响应。如果只有第二个响应对您的组件很重要,您可以使用mergeMap,如果您需要两个响应来处理数据,您应该使用类似CombineTest的东西。看看这是否回答了您的问题?