我正在看一些Github代码,它看起来像一个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
块中将永远无法到达。我这样不对吗? 最佳答案
JavaScript在yield语句之后执行代码吗?
是的,但不是马上。当生成器屈服时,它会暂停,直到迭代器对其调用next()
。然后,生成器继续执行,直到再次产生为止。
此处说明:https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Iterators_and_Generators
关于javascript - JavaScript在yield语句之后执行代码吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45240857/