想象一下,我有一个使用CM文档中包含的Loader
实现的协程,我用它来显示我页面上的繁忙指示符
现在假设用户试图将已经存在的对象添加到数据存储中 - 自然地在协程期间“保存”操作将失败,这意味着协同程序将取消执行
如果发生这种情况,枚举器永远不会到达我的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的任何交互!)
我可以扩展coroutine的实现并让迭代器有一个标志,说明是否允许它们在出现错误时执行 - 只是想知道是否有人已经这样做了或者它是否是框架的一部分我'我不见了?