想象一下,我有一个协程,它使用Loader
CM 文档中包含的实现,我用它在我的页面上显示一个繁忙的指示器
现在想象一下,用户试图将一个已经存在的对象添加到数据存储中——在协程期间,“保存”操作自然会失败,这意味着协程将取消执行
如果发生这种情况,枚举器永远不会到达我Loader.Hide()
隐藏忙碌指示器的调用 - 我想知道是否已经有一种机制允许IResult
即使协程失败也可以执行某些实现?
例子:
public IEnumerator<IResult> SaveData()
{
yield return Framework.Coroutines.Loader.Show("Saving Data");
yield return new Framework.Coroutines.SaveOperation(SomeObject);
yield return Framework.Coroutines.Loader.Hide();
}
如果协程在第二步中正常失败,忙碌指示符将保留在屏幕上,让用户没有机会更正错误并尝试重新保存(并停止与底层 UI 的任何交互!)
我可以扩展协程的实现,并让迭代器有一个标志,表明是否允许在出现错误时执行它们 - 只是想知道是否有人已经这样做了,或者它是否是我缺少的框架的一部分?