如何将Promise的异步操作改写成长尾?

2026-04-06 19:061阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计154个文字,预计阅读时间需要1分钟。

如何将Promise的异步操作改写成长尾?

plaintextinterface IBase { do(i: number): Promise;}

class BaseClass implements IBase { async do(i: number): Promise { return new Promise((resolve, reject)=> { setTimeout(()=> { resolve(); }, i); }); }}

class AClass extends BaseClass { async run(i: string) { // ... }}

如何将Promise的异步操作改写成长尾?

gistfile1.txt

interface IBase{ do(i:number):Promise ; } class BaseClass implements IBase{ async do(i:number):Promise { return new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve(); },i); }); } } class Aclass extends BaseClass{ async run(i:number,s:string):Promise { let j = 0; while(j<10){ console.log(s); await this.do(i); j++; } } } async function main(){ let a = new Aclass(); let b = new Aclass(); a.run(2000,'aaaaa'); b.run(3500,'bbbbb'); } main(); 对应的输出(a每两秒输出一次,b每3.5秒输出一次,他们之间相互不影响各自的时间间隔,犹豫多线程一样。):

本文共计154个文字,预计阅读时间需要1分钟。

如何将Promise的异步操作改写成长尾?

plaintextinterface IBase { do(i: number): Promise;}

class BaseClass implements IBase { async do(i: number): Promise { return new Promise((resolve, reject)=> { setTimeout(()=> { resolve(); }, i); }); }}

class AClass extends BaseClass { async run(i: string) { // ... }}

如何将Promise的异步操作改写成长尾?

gistfile1.txt

interface IBase{ do(i:number):Promise ; } class BaseClass implements IBase{ async do(i:number):Promise { return new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve(); },i); }); } } class Aclass extends BaseClass{ async run(i:number,s:string):Promise { let j = 0; while(j<10){ console.log(s); await this.do(i); j++; } } } async function main(){ let a = new Aclass(); let b = new Aclass(); a.run(2000,'aaaaa'); b.run(3500,'bbbbb'); } main(); 对应的输出(a每两秒输出一次,b每3.5秒输出一次,他们之间相互不影响各自的时间间隔,犹豫多线程一样。):