我需要以特定順序執行一些異步函式,并等待每個函式完成。我這樣做:
public async init(): Promise<void> {
try {
this.executeFunction1().then(() => {
this.executeFunction2().then(() => {
this.executeFunction3().then(() => {
this.executeFunction4().then(() => {
this.executeFunction5();
});
});
});
});
} catch (error) {
this.log.error(`Init failed`);
}
}
所有功能都是異步的,例如:
public async executeFunction1(): Promise<void> {
...........................
}
這是一個好方法(最佳實踐)還是這種方法是“好的”/“不建議”,但有更好的方法嗎?
uj5u.com熱心網友回復:
這是一個微不足道的async/await案例。由于您已經在使用async,因此您錯過了awaits。像這樣的事情會做:
public async init(): Promise<void> {
try {
await this.executeFunction1();
await this.executeFunction2();
await this.executeFunction3();
await this.executeFunction4();
await this.executeFunction5();
} catch (error) {
this.log.error(`Init failed`);
}
}
這種編程是引入async/ 的主要原因await,以便以偽同步方式促進異步呼叫。
uj5u.com熱心網友回復:
如果你想使用 RxJS 你可以使用concat創建方法:
import { concat } from 'rxjs';
concat(
this.executeFunction1(),
this.executeFunction2(),
this.executeFunction3(),
this.executeFunction4(),
this.executeFunction5(),
).subscribe();
uj5u.com熱心網友回復:
你可能想要這樣的東西:
public async init(): Promise<void> {
try {
await this.executeFunction1();
await this.executeFunction2();
// etc ...
} catch (error) {
this.log.error(`Init failed`);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/341116.html
