mirror of https://github.com/Cysharp/UniTask
Merge pull request #23 from TamuraKazunori/fix_enumerator_async
Fixed nested IEnumerator does not consumedpull/24/head
commit
021a1da1fa
|
@ -376,6 +376,27 @@ namespace UniRx.AsyncTests
|
|||
throw new Exception("MyException");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator NestedEnumerator() => UniTask.ToCoroutine(async () =>
|
||||
{
|
||||
var time = Time.realtimeSinceStartup;
|
||||
|
||||
await ParentCoroutineEnumerator();
|
||||
|
||||
var elapsed = Time.realtimeSinceStartup - time;
|
||||
((int)Math.Round(TimeSpan.FromSeconds(elapsed).TotalSeconds, MidpointRounding.ToEven)).Should().Be(3);
|
||||
});
|
||||
|
||||
IEnumerator ParentCoroutineEnumerator()
|
||||
{
|
||||
yield return ChildCoroutineEnumerator();
|
||||
}
|
||||
|
||||
IEnumerator ChildCoroutineEnumerator()
|
||||
{
|
||||
yield return new WaitForSeconds(3);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -191,7 +191,8 @@ namespace UniRx.Async
|
|||
}
|
||||
else if (current is IEnumerator e3)
|
||||
{
|
||||
while (e3.MoveNext())
|
||||
var e4 = ConsumeEnumerator(e3);
|
||||
while (e4.MoveNext())
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue