按顺序运行类实例的方式(打字稿nodejs)

时间:2019-03-01 09:27:22

标签: javascript node.js typescript

我有一个打字稿类,多次调用同一个函数,但它以异步方式运行。

我希望以这样的方式运行:当第一个调用结束时,再运行第二个,依此类推...使用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';
.......

预期输出应按顺序

2 个答案:

答案 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)

您应该:

  • 在使用await的任何函数中使用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');
}