我正在看一些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/

10-09 15:06