我一直在處理一個有趣的問題,在我的Typescript項目中(針對es6)。基本上,我希望能夠以某種不確定的順序快速定義許多不同系列的用戶輸入「頁面」,以及上一頁的結果對構建下一個「頁面」可能有沒有影響。Typescript async/await結構問題
因此,我將每個頁面視爲由函數構造的Promise(此處爲getPromise1()
等),一旦用戶輸入完成,該函數就會解析爲結果。然後我使用async/await按順序創建頁面。
async process() {
let result1 = await this.getPromise1();
let result2 = await this.getPromise2(result1.someData);
//etc...
this.commit();
}
這個效果很好,但是我碰到了一個障礙。頁面順序可以通過用戶輸入在任何階段取消,因此構建需要在該點中止。問題是,在每一個階段檢查取消都變得非常乏味和不雅,而且對我來說,感覺非常強烈,就像錯誤的路要走。
async process() {
let result1 = await this.getPromise1();
if (result1.cancelled) {
this.revert();
return;
}
let result2 = await this.getPromise2(result1.someData);
if (result2.cancelled) {
this.revert();
return;
}
//etc...
this.commit();
}
我在哪裏出錯了?我對這種設置使用完全不正確的模式嗎?有沒有更好的方法來處理這種方法?或者是否真的沒有更好的辦法去做這樣的事情?
僅供參考,'異步/ await'不是ES7的一部分。 –