Discussion 解説
This iterator calls next()
on its base iterator; if this call returns nil
, next()
returns nil
. Otherwise, next()
calls the transforming closure on the received element, takes the resulting asynchronous sequence, and creates an asynchronous iterator from it. next()
then consumes values from this iterator until it terminates. At this point, next()
is ready to receive the next value from the base sequence. If transform
throws an error, the sequence terminates.
このイテレータは、next()
をそれの基底イテレータ上で呼び出します;この呼び出しがnil
を返すならば、next()
はnil
を返します。そうでなければ、next()
は変換クロージャをその受け取った要素上で呼び出して、結果の非同期シーケンスをとり、そして非同期イテレータをそれから作成します。next()
はそれから、このイテレータから値を消費します、それが終端するまで。この時点で、next()
は次の要素を基底シーケンスから受け取る準備ができています。transform
がエラーをスローするならば、そのシーケンスは終端します。