我有一个打字稿类,多次调用同一个函数,但它以异步方式运行。
我希望以这样的方式运行:当第一个调用结束时,再运行第二个,依此类推...使用rxjs或其他任何方式
class person extends human{
async identity(id:any, data: any){
await writeData(id,data);
}
}
class human(){
writeData(id:any, data: any){
console.log(id,data);
}
}
person.identity(1,'a');
person.identity(2,'b');
person.identity(3,'c');
person.identity(4,'d');
Output :
3,'c';
4,'d';
.......
预期输出应按顺序
答案 0 :(得分:1)
制作identity
函数async
,以便您可以在其中使用await
,然后它将返回一个Promise,该Promise会在结束时解析-因此,只需{{ 1}}每次调用await
。您还应该引用person.identity
才能使用this.writeData
函数。
human.prototype.writeData
和
class person extends human{
async identity(id:any, data: any){
await this.writeData(id,data);
}
}
答案 1 :(得分:1)
您应该:
async
关键字await
任何您想等待的承诺class person extends human{
async identity(id:any, data: any){
await writeData(id,data);
}
}
class human(){
writeData(id:any, data: any){
console.log(id,data);
}
}
(async () => {
await person.identity(1,'a');
await person.identity(2,'b');
await person.identity(3,'c');
await person.identity(4,'d');
}