我一直在处理一个有趣的问题,在我的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的一部分。 –