2017-07-21 11 views
1

私はいくつかのGithubコードを見ていて、yield文の後に式があるように見えます。JavaScriptはyield文の後にコードを実行しますか?

リンクはhereある、と私は見ているコードはこれです:

if (curbyte === LF && lastbyte !== CR || curbyte === CR && curpos < bytesRead - 1) { 
    yield _concat(lineBuffer, readChunk.slice(startpos, curpos)); 

    lineBuffer = undefined; 
    startpos = curpos + 1; 

    if (curbyte === CR && readChunk[curpos + 1] === LF) { 
     startpos++; 
     curpos++; 
    } 
} else if (curbyte === CR && curpos >= bytesRead - 1) { 
    lastbyte = curbyte; 
} 
私は思っているだろう

その行の後にすべてのもの:

yield _concat(lineBuffer, readChunk.slice(startpos, curpos)); 

と同じifブロック内決して達成されないだろう。それは私には間違っていますか?

答えて

1

JavaScriptはyield文の後にコードを実行しますか?

はい、ただしすぐにはありません。ジェネレータが発生すると、イテレータがnext()を呼び出すまで一時停止します。その後、ジェネレータは再度実行されるまで実行を再開します。

ここで説明します。https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Iterators_and_Generators

関連する問題