Generator.prototype.next()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itโs been available across browsers since โจ2016๋ 9์โฉ.
next()
๋ฉ์๋๋ done
๊ณผ value
์์ฑ์ ๊ฐ์ง๋ ๊ฐ์ฒด๋ฅผ ๋ฐํ ํฉ๋๋ค. next
๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ์ ์ ๋๋ ์ดํฐ๋ก ๋ณด๋ผ ์๋ ์์ต๋๋ค.
๊ตฌ๋ฌธ
generatorObject.next(value);
๋งค๊ฐ๋ณ์
value
-
์ ๋๋ ์ดํฐ๋ก ๋ณด๋ผ ๊ฐ์ ๋๋ค.
๊ฐ์
yield
์์ ๊ฒฐ๊ณผ๋ก ํ ๋น๋ฉ๋๋ค. ์๋ฅผ ๋ค์ดvariable = yield ์
์์.next()
ํจ์์ ์ ๋ฌ๋ ๊ฐ์variable
์ ํ ๋น๋ฉ๋๋ค.
๋ฐํ ๊ฐ
๋ ๊ฐ์ ์์ฑ์ ๊ฐ์ง ๊ฐ์ฒด
์ด๊ณ , ์ด ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
done
(boolean)-
๋ฐ๋ณต์๊ฐ ๋ฐ๋ณต ์ํ์ค์ ๋์ ์ง๋ ๊ฒฝ์ฐ
true
์ ๋๋ค. ์ด ๊ฒฝ์ฐvalue
๋ ์ ํ์ ์ผ๋ก ๋ฐ๋ณต์์ ๋ฐํ ๊ฐ์ ์ง์ ํฉ๋๋ค.๋ฐ๋ณต์๊ฐ ์ํ์ค์์ ๋ค์ ๊ฐ์ ์์ฑํ ์ ์๋ ๊ฒฝ์ฐ
false
์ ๋๋ค. ์ด๋done
์์ฑ์ ์์ ํ ์ง์ ํ์ง ์๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. value
-
์ ๋๋ ์ดํฐ๊ฐ ์์ฑํ๊ฑฐ๋ ๋ฐํํ ๋ชจ๋ JavaScript ๊ฐ์ ๋๋ค.
์์
next() ์ฌ์ฉํ๊ธฐ
๋ค์ ์์ ์์๋ ๊ฐ๋จํ ์ ๋๋ ์ดํฐ์ next
๋ฉ์๋๊ฐ ๋ฐํํ๋ ๊ฐ์ฒด๋ฅผ ๋ณด์ฌ ์ค๋๋ค.
function* gen() {
yield 1;
yield 2;
yield 3;
}
const g = gen(); // "Generator { }"
g.next(); // "Object { value: 1, done: false }"
g.next(); // "Object { value: 2, done: false }"
g.next(); // "Object { value: 3, done: false }"
g.next(); // "Object { value: undefined, done: true }"
๋ฆฌ์คํธ์ ํจ๊ป next() ์ฌ์ฉํ๊ธฐ
์ด ์์ ์์ getPage
๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐ์ pageSize
ํฌ๊ธฐ์ ์ฒญํฌ๋ก "ํ์ด์ง ๋๋๊ธฐ"๋ฅผ ์ํํฉ๋๋ค. next
๋ฅผ ํธ์ถํ ๋๋ง๋ค ๊ทธ๋ฌํ ์ฒญํฌ๊ฐ ํ๋ ์์ฑ๋ฉ๋๋ค.
function* getPage(pageSize = 1, list) {
let output = [];
let index = 0;
while (index < list.length) {
output = [];
for (let i = index; i < index + pageSize; i++) {
if (list[i]) {
output.push(list[i]);
}
}
yield output;
index += pageSize;
}
}
list = [1, 2, 3, 4, 5, 6, 7, 8];
let page = getPage(3, list); // Generator { }
page.next(); // Object {value: (3) [1, 2, 3], done: false}
page.next(); // Object {value: (3) [4, 5, 6], done: false}
page.next(); // Object {value: (2) [7, 8], done: false}
page.next(); // Object {value: undefined, done: true}
์ ๋๋ ์ดํฐ์ ๊ฐ ๋ณด๋ด๊ธฐ
์ด ์์ ์์๋ ๊ฐ๊ณผ ํจ๊ป next
๋ฅผ ํธ์ถํฉ๋๋ค.
์ฐธ๊ณ : ์ ๋๋ ์ดํฐ๊ฐ ์ฒ์์๋ ์๋ฌด๊ฒ๋ ์์ฑํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ฒซ ๋ฒ์งธ ํธ์ถ์์ ๊ธฐ๋ก๋๋ ๊ฒ์ ์์ต๋๋ค.
function* gen() {
while (true) {
let value = yield null;
console.log(value);
}
}
const g = gen();
g.next(1);
// "{ value: null, done: false }"
g.next(2);
// 2
// "{ value: null, done: false }"
๋ช ์ธ์
Specification |
---|
ECMAScriptยฎ 2026 Language Specification # sec-generator.prototype.next |
๋ธ๋ผ์ฐ์ ํธํ์ฑ
Loadingโฆ