私はTypescriptプロジェクトで興味深い問題に取り組んでいます(es6をターゲットにしています)。基本的に、いくつかの未定義の順序で多数の異なる一連のユーザー入力「ページ」を迅速に定義でき、前のページの結果が次のページの構築に何らかの影響を及ぼしているかもしれない。Typescript async /構造化の問題が発生する
私は、ユーザ入力が完了すると結果に解決する関数(ここではgetPromise1()
など)で構築されたPromiseとして各ページを考えています。次に、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の一部ではありません。 –