Node.js Generators & Compare with Callbacks

โšก ฮˆฮพฯ…ฯ€ฮฝฮท ฮฃฯฮฝฮฟฯˆฮท

Generatorฮคฮฑ s ฯƒฯ„ฮฟ Node.js ฮตฮฏฮฝฮฑฮน ฯƒฯ…ฮฝฮฑฯฯ„ฮฎฯƒฮตฮนฯ‚ ฯ„ฯ‰ฮฝ ฮฟฯ€ฮฟฮฏฯ‰ฮฝ ฮท ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฮฑฮฝฮฑฯƒฯ„ฮฑฮปฮตฮฏ ฮบฮฑฮน ฮฝฮฑ ฯƒฯ…ฮฝฮตฯ‡ฮนฯƒฯ„ฮตฮฏ ฮบฮฑฯ„' ฮฑฯ€ฮฑฮฏฯ„ฮทฯƒฮท. ฮ— ฮปฮญฮพฮท-ฮบฮปฮตฮนฮดฮฏ yield ฮธฮญฯ„ฮตฮน ฯƒฮต ฯ€ฮฑฯฯƒฮท ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท, ฮท ฮตฯ€ฯŒฮผฮตฮฝฮท ฮผฮญฮธฮฟฮดฮฟฯ‚ ฯ„ฮทฮฝ ฯƒฯ…ฮฝฮตฯ‡ฮฏฮถฮตฮน ฮบฮฑฮน ฮฑฯ…ฯ„ฮฎ ฮท ฮฑฮฝฯ„ฮนฯƒฯ„ฮฟฮฏฯ‡ฮนฯƒฮท ฮนฯƒฮฟฯ€ฮตฮดฯŽฮฝฮตฮน ฯ„ฮนฯ‚ ฮฒฮฑฮธฮนฮฌ ฮญฮฝฮธฮตฯ„ฮตฯ‚ ฮตฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚ ฯƒฮต ฮฑฮฝฮฑฮณฮฝฯŽฯƒฮนฮผฮฟ ฮดฮนฮฑฮดฮฟฯ‡ฮนฮบฯŒ ฮบฯŽฮดฮนฮบฮฑ.

  • โธ๏ธ ฮ’ฮฑฯƒฮนฮบฮฎ ฮฃฯ…ฮผฯ€ฮตฯฮนฯ†ฮฟฯฮฌ: ฮœฮนฮฑ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฮฑฮฝฮฑฯƒฯ„ฮญฮปฮปฮตฮน ฯƒฮต ฮบฮฌฮธฮต ฮฑฯ€ฯŒฮดฮฟฯƒฮท ฮบฮฑฮน ฯƒฯ…ฮฝฮตฯ‡ฮฏฮถฮตฮน ฮฑฮบฯฮนฮฒฯŽฯ‚ ฮฑฯ€ฯŒ ฮตฮบฮตฮฏ ฯ€ฮฟฯ… ฯƒฯ„ฮฑฮผฮฌฯ„ฮทฯƒฮต ฯŒฯ„ฮฑฮฝ ฮบฮฑฮปฮตฮฏฯ„ฮฑฮน ฮท ฮตฮฝฯ„ฮฟฮปฮฎ next.
  • โœณ๏ธ ฮ”ฮฎฮปฯ‰ฯƒฮท: ฮˆฮฝฮฑฯ‚ ฮฑฯƒฯ„ฮตฯฮฏฯƒฮบฮฟฯ‚ ฮผฮตฯ„ฮฌ ฯ„ฮท ฮปฮญฮพฮท-ฮบฮปฮตฮนฮดฮฏ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮทฯ‚ ฯƒฮทฮผฮฑฯ„ฮฟฮดฮฟฯ„ฮตฮฏ ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ‰ฯ‚ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฮบฮฑฮน ฯŒฯ‡ฮน ฯ‰ฯ‚ ฯƒฯ…ฮฝฮทฮธฮนฯƒฮผฮญฮฝฮท.
  • ๐Ÿ”„ ฮ”ฮนฯ€ฮปฮฎฯ‚ ฮบฮฑฯ„ฮตฯฮธฯ…ฮฝฯƒฮทฯ‚ ฮบฮฑฮฝฮฌฮปฮน: ฮœฮนฮฑ ฯ„ฮนฮผฮฎ ฯ€ฮฟฯ… ฯ€ฮตฯฮฝฮฌฮตฮน ฯƒฯ„ฮฟ next ฮณฮฏฮฝฮตฯ„ฮฑฮน ฯ„ฮฟ ฮฑฯ€ฮฟฯ„ฮญฮปฮตฯƒฮผฮฑ ฯ„ฮทฯ‚ ฯ€ฮฑฯฮฌฯƒฯ„ฮฑฯƒฮทฯ‚ yield ฯ€ฮฟฯ… ฮญฮธฮตฯƒฮต ฯƒฮต ฯ€ฮฑฯฯƒฮท ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท.
  • ๐Ÿช† ฮšฯŒฮปฮฑฯƒฮท ฮ•ฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฯ‰ฮฝ: ฮŸฮน ฮญฮฝฮธฮตฯ„ฮตฯ‚ ฮตฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚ ฮณฮฏฮฝฮฟฮฝฯ„ฮฑฮน ฮดฯ…ฯƒฮฑฮฝฮฌฮณฮฝฯ‰ฯƒฯ„ฮตฯ‚ ฮบฮฑฮธฯŽฯ‚ ฯ€ฯฮฟฯƒฯ„ฮฏฮธฮตฮฝฯ„ฮฑฮน ฮฒฮฎฮผฮฑฯ„ฮฑ, ฮบฮฌฯ„ฮน ฯ€ฮฟฯ… ฮตฮฏฮฝฮฑฮน ฯ„ฮฟ ฯ€ฯฯŒฮฒฮปฮทฮผฮฑ ฮณฮนฮฑ ฯ„ฮฟ ฮฟฯ€ฮฟฮฏฮฟ ฯ…ฮนฮฟฮธฮตฯ„ฮฎฮธฮทฮบฮฑฮฝ ฮฟฮน ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚.
  • ๐Ÿƒ ฮ‘ฯ€ฮฑฮนฯ„ฮตฮฏฯ„ฮฑฮน ฮ”ฯฮฟฮผฮญฮฑฯ‚: ฮœฮนฮฑ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฮดฮตฮฝ ฮบฮนฮฝฮตฮฏฯ„ฮฑฮน ฮฑฯ€ฯŒ ฮผฯŒฮฝฮท ฯ„ฮทฯ‚ยท ฮผฮนฮฑ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท runner ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฮบฮฑฮปฮตฮฏ ฮตฯ€ฮฑฮฝฮตฮนฮปฮทฮผฮผฮญฮฝฮฑ ฯ„ฮทฮฝ ฮตฮฝฯ„ฮฟฮปฮฎ next ฮณฮนฮฑ ฮฝฮฑ ฯ€ฯฮฟฯ‡ฯ‰ฯฮฎฯƒฮตฮน ฮท ฮฑฯƒฯฮณฯ‡ฯฮฟฮฝฮท ฮตฯฮณฮฑฯƒฮฏฮฑ.
  • ๐Ÿฆฅ ฮคฮตฮผฯ€ฮญฮปฮทฯ‚ ฮ•ฮบฯ„ฮญฮปฮตฯƒฮท: ฮ— ฮฑฮฝฮฑฯƒฯ„ฮฟฮปฮฎ ฮบฮฑฮน ฮท ฯƒฯ…ฮฝฮญฯ‡ฮนฯƒฮท ฮตฯ€ฮนฯ„ฯฮญฯ€ฮตฮน ฯƒฮต ฮญฮฝฮฑ ฯ€ฯฯŒฮณฯฮฑฮผฮผฮฑ ฮฝฮฑ ฮฑฮฝฮฑฮบฯ„ฮฌ ฯ„ฮนฮผฮญฯ‚ ฮผฯŒฮฝฮฟ ฯ„ฮท ฯƒฯ„ฮนฮณฮผฮฎ ฯ€ฮฟฯ… ฯ„ฮนฯ‚ ฯ‡ฯฮตฮนฮฌฮถฮฟฮฝฯ„ฮฑฮน.

Node.js Generators ฮฃฮต ฯƒฯฮณฮบฯฮนฯƒฮท ฮผฮต ฯ„ฮนฯ‚ ฮตฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚

ฮฃฮต ฮฑฯ…ฯ„ฮฎฮฝ ฯ„ฮทฮฝ ฮฑฮฝฮฑฮปฯ…ฯ„ฮนฮบฮฎ ฯ€ฮฑฯฮฟฯ…ฯƒฮฏฮฑฯƒฮท ฮตฮพฮตฯ„ฮฌฮถฮฟฯ…ฮผฮต ฯ„ฮนฯ‚ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚ ฮบฮฑฮน ฯ€ฯŽฯ‚ ฮดฮนฮฑฯ†ฮญฯฮฟฯ…ฮฝ ฮฑฯ€ฯŒ ฯ„ฮนฯ‚ ฮตฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚.

ฮคฮน ฮตฮฏฮฝฮฑฮน ฮฟฮน ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚;

Generators ฮญฮณฮนฮฝฮต ฮดฮทฮผฮฟฯ†ฮนฮปฮญฯ‚ ฯ„ฮฟ Node.js ฮปฯŒฮณฯ‰ ฮฑฯ…ฯ„ฯŽฮฝ ฯ€ฮฟฯ… ฮตฮฏฮฝฮฑฮน ฮนฮบฮฑฮฝฮฟฮฏ ฮฝฮฑ ฮบฮฌฮฝฮฟฯ…ฮฝ.

  • Generatorฮคฮฑ s ฮตฮฏฮฝฮฑฮน ฮตฮบฯ„ฮตฮปฮญฯƒฮตฮนฯ‚ ฯƒฯ…ฮฝฮฑฯฯ„ฮฎฯƒฮตฯ‰ฮฝ ฯ€ฮฟฯ… ฮผฯ€ฮฟฯฮฟฯฮฝ ฮฝฮฑ ฮฑฮฝฮฑฯƒฯ„ฮฑฮปฮฟฯฮฝ ฮบฮฑฮน ฮฝฮฑ ฯƒฯ…ฮฝฮตฯ‡ฮนฯƒฯ„ฮฟฯฮฝ ฯƒฮต ฮผฮตฯ„ฮฑฮณฮตฮฝฮญฯƒฯ„ฮตฯฮฟ ฯƒฮทฮผฮตฮฏฮฟ.
  • Generatorฮคฮฑ s ฮตฮฏฮฝฮฑฮน ฯ‡ฯฮฎฯƒฮนฮผฮฑ ฮณฮนฮฑ ฮญฮฝฮฝฮฟฮนฮตฯ‚ ฯŒฯ€ฯ‰ฯ‚ ฮท ยซฯ„ฮตฮผฯ€ฮญฮปฮทฯ‚ ฮตฮบฯ„ฮญฮปฮตฯƒฮทยป. ฮ‘ฮฝฮฑฯƒฯ„ฮญฮปฮปฮฟฮฝฯ„ฮฑฯ‚ ฯ„ฮทฮฝ ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฮบฮฑฮน ฯƒฯ…ฮฝฮตฯ‡ฮฏฮถฮฟฮฝฯ„ฮฑฯ‚ ฮบฮฑฯ„ฮฌ ฮฒฮฟฯฮปฮทฯƒฮท, ฮฟฮน ฯ„ฮนฮผฮญฯ‚ ฮตฮพฮฌฮณฮฟฮฝฯ„ฮฑฮน ฮผฯŒฮฝฮฟ ฯŒฯ„ฮฑฮฝ ฯ‡ฯฮตฮนฮฌฮถฮฟฮฝฯ„ฮฑฮน.

Generatorฮญฯ‡ฮฟฯ…ฮฝ ฯ„ฮนฯ‚ ฮดฯฮฟ ฮฒฮฑฯƒฮนฮบฮญฯ‚ ฮผฮตฮธฯŒฮดฮฟฯ…ฯ‚ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰.

  1. ฮœฮญฮธฮฟฮดฮฟฯ‚ ฮฑฯ€ฯŒฮดฮฟฯƒฮทฯ‚ โ€” ฮบฮฑฮปฮตฮฏฯ„ฮฑฮน ฮผฮญฯƒฮฑ ฯƒฮต ฮผฮนฮฑ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮณฮนฮฑ ฮฝฮฑ ฯƒฯ„ฮฑฮผฮฑฯ„ฮฎฯƒฮตฮน ฯ„ฮทฮฝ ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฯƒฯ„ฮทฮฝ ฮฑฮบฯฮนฮฒฮฎ ฮณฯฮฑฮผฮผฮฎ ฯŒฯ€ฮฟฯ… yield ฮตฮผฯ†ฮฑฮฝฮฏฮถฮตฯ„ฮฑฮน.
  2. ฮ•ฯ€ฯŒฮผฮตฮฝฮท ฮผฮญฮธฮฟฮดฮฟฯ‚ โ€” ฮบฮปฮฎฮธฮทฮบฮต ฮฑฯ€ฯŒ ฯ„ฮทฮฝ ฮบฯฯฮนฮฑ ฮตฯ†ฮฑฯฮผฮฟฮณฮฎ ฮณฮนฮฑ ฮฝฮฑ ฯƒฯ…ฮฝฮตฯ‡ฮนฯƒฯ„ฮตฮฏ ฮผฮนฮฑ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ€ฮฟฯ… ฮญฯ‡ฮตฮน ฮฑฯ€ฮฟฮดฯŽฯƒฮตฮน. ฮ— ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฯƒฯ…ฮฝฮตฯ‡ฮฏฮถฮตฯ„ฮฑฮน ฮผฮญฯ‡ฯฮน ฯ„ฮทฮฝ ฮตฯ€ฯŒฮผฮตฮฝฮท yield, ฮฎ ฮผฮญฯ‡ฯฮน ฯ„ฮฟ ฯ„ฮญฮปฮฟฯ‚ ฯ„ฮทฯ‚ ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮฏฮฑฯ‚.

ฮ‘ฯ‚ ฮดฮฟฯฮผฮต ฮญฮฝฮฑ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮณฮนฮฑ ฯ„ฮฟ ฯ€ฯŽฯ‚ ฮผฯ€ฮฟฯฮฟฯฮฝ ฮฝฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮทฮธฮฟฯฮฝ ฮฟฮน ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚. ฮคฮฟ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮฟฯฮฏฮถฮตฮน ฮผฮนฮฑ ฮฑฯ€ฮปฮฎ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท Add ฯ€ฮฟฯ… ฯ€ฯฮฟฯƒฮธฮญฯ„ฮตฮน ฮดฯฮฟ ฮฑฯฮนฮธฮผฮฟฯฯ‚, ฯƒฯ„ฮฑฮผฮฑฯ„ฯŽฮฝฯ„ฮฑฯ‚ ฯ„ฮทฮฝ ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฯƒฮต ฮดฮนฮฑฯ†ฮฟฯฮตฯ„ฮนฮบฮฌ ฯƒฮทฮผฮตฮฏฮฑ ฮณฮนฮฑ ฮฝฮฑ ฮดฮตฮฏฮพฮตฮน ฯ€ฯŽฯ‚ ฯƒฯ…ฮผฯ€ฮตฯฮนฯ†ฮญฯฮฟฮฝฯ„ฮฑฮน ฮฟฮน ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚.

Node.js Generators

function* Add(x) {
    yield x + 1;
    // The value passed into the second next() call lands here
    var y = yield(null);
    return x + y;
}

var gen = Add(5);

gen.next();      // runs to the first yield, returns { value: 6, done: false }
gen.next(6);     // resumes, y becomes 6, returns { value: 11, done: true }

Code ฮตฮพฮฎฮณฮทฯƒฮท

  1. ฮคฮฟ ฯ€ฯฯŽฯ„ฮฟ ฮฒฮฎฮผฮฑ ฮตฮฏฮฝฮฑฮน ฮฝฮฑ ฮฟฯฮฏฯƒฮตฯ„ฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑฯ‚. ฮฃฮทฮผฮตฮนฯŽฯƒฯ„ฮต ฯ„ฮฟ * ฯ€ฯฮฟฯƒฯ„ฮญฮธฮทฮบฮต ฯƒฯ„ฮฟ function ฮปฮญฮพฮท-ฮบฮปฮตฮนฮดฮฏ. ฮ— ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน Add ฮบฮฑฮน ฮดฮญฯ‡ฮตฯ„ฮฑฮน ฮผฮนฮฑ ฯ€ฮฑฯฮฌฮผฮตฯ„ฯฮฟ x.
  2. The yield ฮ— ฮปฮญฮพฮท-ฮบฮปฮตฮนฮดฮฏ ฮตฮฏฮฝฮฑฮน ฯƒฯ…ฮณฮบฮตฮบฯฮนฮผฮญฮฝฮท ฮณฮนฮฑ ฯ„ฮฟฯ…ฯ‚ generators ฮบฮฑฮน ฮดฮนฮฑฮบฯŒฯ€ฯ„ฮตฮน ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮบฮฑฯ„ฮฌ ฯ„ฮท ฮดฮนฮฌฯฮบฮตฮนฮฑ ฯ„ฮทฯ‚ ฮตฮบฯ„ฮญฮปฮตฯƒฮทฯ‚. ฮ— ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฯƒฯ„ฮฑฮผฮฑฯ„ฮฌ ฮตฮดฯŽ ฮผฮญฯ‡ฯฮน next() ฮตฯ€ฮนฮบฮฑฮปฮตฮฏฯ„ฮฑฮน.
  3. ฮคฮฟ ฮดฮตฯฯ„ฮตฯฮฟ yield ฯ€ฮฑฯฮตฮน ฯ€ฯฮฟฯƒฯ‰ฯฮนฮฝฮฌ ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮบฮฑฮน ฮปฮฑฮผฮฒฮฌฮฝฮตฮน ฮผฮนฮฑ ฯ„ฮนฮผฮฎ: ฯŒ,ฯ„ฮน ฮบฮน ฮฑฮฝ ฯ€ฮตฯฮฌฯƒฮตฮน ฯƒฯ„ฮทฮฝ ฮฑฮบฯŒฮปฮฟฯ…ฮธฮท next() ฮท ฮบฮปฮฎฯƒฮท ฮณฮฏฮฝฮตฯ„ฮฑฮน ฮท ฯ„ฮนฮผฮฎ ฯ„ฮฟฯ… y.
  4. ฮบฮปฮฎฯƒฮท gen.next() ฯ„ฮทฮฝ ฯ€ฯฯŽฯ„ฮท ฯ†ฮฟฯฮฌ ฮตฮบฯ„ฮตฮปฮตฮฏฯ„ฮฑฮน ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮผฮญฯ‡ฯฮน ฯ„ฮทฮฝ ฯ€ฯฯŽฯ„ฮท yieldฮšฮปฮฎฯƒฮท gen.next(6) ฯ„ฮฟ ฯƒฯ…ฮฝฮตฯ‡ฮฏฮถฮตฮน, ฮฑฮฝฮฑฮธฮญฯ„ฮตฮน 6 ฯƒฮต y, ฮบฮฑฮน ฮตฯ€ฮนฯƒฯ„ฯฮญฯ†ฮตฮน x + y.

โš ๏ธ ฮ”ฮนฯŒฯฮธฯ‰ฯƒฮท: ฮท ฮฑฯฯ‡ฮนฮบฮฎ ฮบฮฑฯ„ฮฑฯ‡ฯŽฯฮนฯƒฮท ฯ€ฮตฯฮนฮตฮฏฯ‡ฮต ฯ„ฮท ฮณฯฮฑฮผฮผฮฎ y = 6 ฮฑฮผฮญฯƒฯ‰ฯ‚ ฮผฮตฯ„ฮฌ var y = yield(null);ฮ‘ฯ…ฯ„ฮฎ ฮท ฮฑฮฝฮฌฮธฮตฯƒฮท ฮฑฮฝฯ„ฮนฮบฮฑฮธฮนฯƒฯ„ฮฌ ฮฟฯ€ฮฟฮนฮฑฮดฮฎฯ€ฮฟฯ„ฮต ฯ„ฮนฮผฮฎ next() ฯ€ฯฮฟฮผฮฎฮธฮตฮนฮตฯ‚, ฮบฮฌฯ„ฮน ฯ€ฮฟฯ… ฮฑฮบฯ…ฯฯŽฮฝฮตฮน ฯ„ฮฟฮฝ ฯƒฮบฮฟฯ€ฯŒ ฯ„ฮฟฯ… ฯ€ฮฑฯฮฑฮดฮตฮฏฮณฮผฮฑฯ„ฮฟฯ‚ ฮบฮฑฮน ฮบฮฑฮธฮนฯƒฯ„ฮฌ ฯ„ฮฟ ฮดฮตฯฯ„ฮตฯฮฟ yield ฯ‡ฯ‰ฯฮฏฯ‚ ฮฝฯŒฮทฮผฮฑ. ฮ— ฯ„ฮนฮผฮฎ ฯ„ฯŽฯฮฑ ฯ€ฮตฯฮฝฮฌฮตฮน ฮผฮญฯƒฮฑ ฮฑฯ€ฯŒ gen.next(6), ฯ€ฮฟฯ… ฮตฮฏฮฝฮฑฮน ฮฟ ฯ„ฯฯŒฯ€ฮฟฯ‚ ฮผฮต ฯ„ฮฟฮฝ ฮฟฯ€ฮฟฮฏฮฟ ฮผฮนฮฑ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฮปฮฑฮผฮฒฮฌฮฝฮตฮน ฯƒฯ„ฮทฮฝ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฯŒฯ„ฮทฯ„ฮฑ ฮดฮตฮดฮฟฮผฮญฮฝฮฑ ฮฑฯ€ฯŒ ฯ„ฮฟฮฝ ฮบฮฑฮปฮฟฯฮฝฯ„ฮฑ.

ฮ•ฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚ ฮญฮฝฮฑฮฝฯ„ฮน ฮณฮตฮฝฮฝฮทฯ„ฯฮนฯŽฮฝ

Generatorฮปฯฮฝฮฟฯ…ฮฝ ฯ„ฮฟ ฯ€ฯฯŒฮฒฮปฮทฮผฮฑ ฯ€ฮฟฯ… ฮตฮฏฮฝฮฑฮน ฮณฮฝฯ‰ฯƒฯ„ฯŒ ฯ‰ฯ‚ ฮบฯŒฮปฮฑฯƒฮท ฮตฯ€ฮฑฮฝฮฌฮบฮปฮทฯƒฮทฯ‚. ฮŸฮน ฯƒฯ…ฮฝฮฑฯฯ„ฮฎฯƒฮตฮนฯ‚ ฮตฯ€ฮฑฮฝฮฌฮบฮปฮทฯƒฮทฯ‚ ฮผฮตฯฮนฮบฮญฯ‚ ฯ†ฮฟฯฮญฯ‚ ฮณฮฏฮฝฮฟฮฝฯ„ฮฑฮน ฯ„ฯŒฯƒฮฟ ฮฒฮฑฮธฮนฮฌ ฮญฮฝฮธฮตฯ„ฮตฯ‚ ฮบฮฑฯ„ฮฌ ฯ„ฮทฮฝ ฮฑฮฝฮฌฯ€ฯ„ฯ…ฮพฮท ฮผฮนฮฑฯ‚ ฮตฯ†ฮฑฯฮผฮฟฮณฮฎฯ‚ Node.js ฯ€ฮฟฯ… ฮตฮฏฮฝฮฑฮน ฮดฯฯƒฮบฮฟฮปฮฟ ฮฝฮฑ ฯ„ฮนฯ‚ ฯ€ฮฑฯฮฑฮบฮฟฮปฮฟฯ…ฮธฮฎฯƒฮตฮน ฮบฮฑฮฝฮตฮฏฯ‚.

ฮ•ฮดฯŽ ฮฒฮฟฮทฮธฮฟฯฮฝ ฮฟฮน ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚. ฮˆฮฝฮฑ ฮฑฯ€ฯŒ ฯ„ฮฑ ฯ€ฮนฮฟ ฯƒฯ…ฮฝฮทฮธฮนฯƒฮผฮญฮฝฮฑ ฯ€ฮฑฯฮฑฮดฮตฮฏฮณฮผฮฑฯ„ฮฑ ฮตฮฏฮฝฮฑฮน ฮท ฮดฮทฮผฮนฮฟฯ…ฯฮณฮฏฮฑ ฯƒฯ…ฮฝฮฑฯฯ„ฮฎฯƒฮตฯ‰ฮฝ ฯ‡ฯฮฟฮฝฮฟฮดฮนฮฑฮบฯŒฯ€ฯ„ฮท. ฮคฮฟ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮดฮทฮผฮนฮฟฯ…ฯฮณฮตฮฏ ฮผฮนฮฑ ฮฑฯ€ฮปฮฎ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ‡ฯฮฟฮฝฮนฮบฮฎฯ‚ ฮบฮฑฮธฯ…ฯƒฯ„ฮญฯฮทฯƒฮทฯ‚ ฮบฮฑฮน ฯƒฯ„ฮท ฯƒฯ…ฮฝฮญฯ‡ฮตฮนฮฑ ฯ„ฮทฮฝ ฮบฮฑฮปฮตฮฏ ฮผฮต ฮบฮฑฮธฯ…ฯƒฯ„ฮตฯฮฎฯƒฮตฮนฯ‚ 1000, 2000 ฮบฮฑฮน 3000 ms.

ฮ’ฮฎฮผฮฑ 1) ฮŸฯฮฏฯƒฯ„ฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮตฯ€ฮฑฮฝฮฌฮบฮปฮทฯƒฮทฯ‚ ฮผฮต ฯ„ฮฟฮฝ ฮฑฯ€ฮฑฯฮฑฮฏฯ„ฮทฯ„ฮฟ ฮบฯ‰ฮดฮนฮบฯŒ ฯ‡ฯฮฟฮฝฮนฮบฮฎฯ‚ ฮบฮฑฮธฯ…ฯƒฯ„ฮญฯฮทฯƒฮทฯ‚.

ฮ•ฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚ vs. Generators

function Timedelay(ptime, callback) {

    setTimeout(function() {

        callback("Pausing for " + ptime);

    }, ptime);   // the delay must use ptime, the parameter name
}

Code ฮตฮพฮฎฮณฮทฯƒฮท

  1. ฮœฮนฮฑ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน Timedelay ฮดฮทฮผฮนฮฟฯ…ฯฮณฮตฮฏฯ„ฮฑฮน ฮผฮต ฮผฮนฮฑ ฯ€ฮฑฯฮฌฮผฮตฯ„ฯฮฟ ptime, ฯ„ฮฟ ฮฟฯ€ฮฟฮฏฮฟ ฯ†ฮญฯฮตฮน ฯ„ฮฟฮฝ ฮฑฯฮนฮธฮผฯŒ ฯ„ฯ‰ฮฝ ฯ‡ฮนฮปฮนฮฟฯƒฯ„ฯŽฮฝ ฯ„ฮฟฯ… ฮดฮตฯ…ฯ„ฮตฯฮฟฮปฮญฯ€ฯ„ฮฟฯ… ฮณฮนฮฑ ฯ€ฮฑฯฯƒฮท.
  2. setTimeout ฯ€ฮตฯฮนฮผฮญฮฝฮตฮน ฯ„ฯŒฯƒฮฑ ฯ‡ฮนฮปฮนฮฟฯƒฯ„ฮฌ ฯ„ฮฟฯ… ฮดฮตฯ…ฯ„ฮตฯฮฟฮปฮญฯ€ฯ„ฮฟฯ… ฮบฮฑฮน ฯƒฯ„ฮท ฯƒฯ…ฮฝฮญฯ‡ฮตฮนฮฑ ฮบฮฑฮปฮตฮฏ ฯ„ฮทฮฝ ฯ€ฮฑฯฮตฯ‡ฯŒฮผฮตฮฝฮท ฮตฯ€ฮฑฮฝฮฌฮบฮปฮทฯƒฮท.

โš ๏ธ ฮ”ฮนฯŒฯฮธฯ‰ฯƒฮท: ฮฟ ฮฑฯฯ‡ฮนฮบฯŒฯ‚ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฯ€ฮญฯฮฑฯƒฮต time ฯ‰ฯ‚ ฮดฮตฯฯ„ฮตฯฮฟ ฮตฯ€ฮนฯ‡ฮตฮฏฯฮทฮผฮฑ ฮณฮนฮฑ setTimeout, ฮฑฮปฮปฮฌ ฮดฮตฮฝ ฯ…ฯ€ฮฌฯฯ‡ฮตฮน ฮผฮตฯ„ฮฑฮฒฮปฮทฯ„ฮฎ ฮผฮต ฯŒฮฝฮฟฮผฮฑ time ฯ…ฯ€ฮฌฯฯ‡ฮตฮน โ€” ฮท ฯ€ฮฑฯฮฌฮผฮตฯ„ฯฮฟฯ‚ ฮตฮฏฮฝฮฑฮน ptimeฮŒฯ€ฯ‰ฯ‚ ฮตฮฏฮฝฮฑฮน ฮณฯฮฑฮผฮผฮญฮฝฮฟ, ฯฮฏฯ‡ฮฝฮตฮน ReferenceError: time is not defined.

ฮ’ฮฎฮผฮฑ 2) ฮคฯŽฯฮฑ, ฮตฮพฮตฯ„ฮฌฯƒฯ„ฮต ฯ„ฮฟฮฝ ฮบฯŽฮดฮนฮบฮฑ ฯ€ฮฟฯ… ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏ ฮตฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚. ฮ“ฮนฮฑ ฮฝฮฑ ฯƒฯ…ฮฝฮดฮญฯƒฮฟฯ…ฮผฮต ฮฑฮปฯ…ฯƒฮนฮดฯ‰ฯ„ฮฌ ฮบฮฑฮธฯ…ฯƒฯ„ฮตฯฮฎฯƒฮตฮนฯ‚ 1000, 2000 ฮบฮฑฮน 3000 ฯ‡ฮนฮปฮนฮฟฯƒฯ„ฯŽฮฝ ฯ„ฮฟฯ… ฮดฮตฯ…ฯ„ฮตฯฮฟฮปฮญฯ€ฯ„ฮฟฯ…, ฮฟฮน ฮตฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚ ฯ†ฯ‰ฮปฮนฮฌฮถฮฟฯ…ฮฝ ฮท ฮผฮฏฮฑ ฮผฮญฯƒฮฑ ฯƒฯ„ฮทฮฝ ฮฌฮปฮปฮท.

ฮ•ฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚ vs. Generators

Timedelay(1000, function(message) {

    console.log(message);

    Timedelay(2000, function(message) {

        console.log(message);

        Timedelay(3000, function(message) {

            console.log(message);
        });
    });
});

Code ฮตฮพฮฎฮณฮทฯƒฮท

  1. Timedelay ฮบฮฑฮปฮตฮฏฯ„ฮฑฮน ฯ‰ฯ‚ ฮตฯ€ฮฑฮฝฮฌฮบฮปฮทฯƒฮท ฮผฮต ฯ„ฮนฮผฮฎ 1000.
  2. ฮœฮญฯƒฮฑ ฯƒฮต ฮฑฯ…ฯ„ฮฎฮฝ ฯ„ฮทฮฝ ฮตฯ€ฮฑฮฝฮฌฮบฮปฮทฯƒฮท, Timedelay ฮบฮฑฮปฮตฮฏฯ„ฮฑฮน ฮพฮฑฮฝฮฌ ฮผฮต 2000.
  3. ฮœฮญฯƒฮฑ ฯƒฮต ฮฑฯ…ฯ„ฯŒ, Timedelay ฮบฮฑฮปฮตฮฏฯ„ฮฑฮน ฮณฮนฮฑ ฯ„ฯฮฏฯ„ฮท ฯ†ฮฟฯฮฌ ฮผฮต 3000.

โš ๏ธ ฮ”ฮนฯŒฯฮธฯ‰ฯƒฮท: ฮบฮฌฮธฮต ฮตฯ€ฮฑฮฝฮฌฮบฮปฮทฯƒฮท ฯƒฯ„ฮฟ ฮฑฯฯ‡ฮนฮบฯŒ ฮบฮฑฯ„ฮฑฮณฮตฮณฯฮฑฮผฮผฮญฮฝฮฟ msg, ฮฑฮปฮปฮฌ ฮท ฯ€ฮฑฯฮฌฮผฮตฯ„ฯฮฟฯ‚ ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน messageฮšฮฑฮน ฮฟฮน ฯ„ฯฮตฮนฯ‚ ฮณฯฮฑฮผฮผฮญฯ‚ ฮญฯฮนฮพฮฑฮฝ ReferenceError: msg is not defined.

ฮ‘ฯ€ฯŒ ฯ„ฮฟฮฝ ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฮบฯŽฮดฮนฮบฮฑ ฮผฯ€ฮฟฯฮตฮฏฯ„ฮต ฮฝฮฑ ฮดฮตฮฏฯ„ฮต ฯŒฯ„ฮน ฮณฮฏฮฝฮตฯ„ฮฑฮน ฯŒฮปฮฟ ฮบฮฑฮน ฯ€ฮนฮฟ ฮฑฮบฮฑฯ„ฮฌฯƒฯ„ฮฑฯ„ฮฟ ฮผฮต ฮบฮฌฮธฮต ฮตฯ€ฮนฯ€ฮปฮญฮฟฮฝ ฮบฮปฮฎฯƒฮท โ€” ฮฑฯ…ฯ„ฮฎ ฮท ฮญฮฝฮธฮตฯƒฮท ฮตฮฏฮฝฮฑฮน ฮฑฯ…ฯ„ฯŒ ฯ€ฮฟฯ… ฯ€ฮตฯฮนฮณฯฮฌฯ†ฮตฮน ฮท ฮบฯŒฮปฮฑฯƒฮท ฯ„ฮทฯ‚ ฮตฯ€ฮฑฮฝฮฌฮบฮปฮทฯƒฮทฯ‚.

ฮ’ฮฎฮผฮฑ 3) ฮคฯŽฯฮฑ ฮดฮตฮฏฯ„ฮต ฯ„ฮทฮฝ ฮฏฮดฮนฮฑ ฯƒฯ…ฮผฯ€ฮตฯฮนฯ†ฮฟฯฮฌ ฮณฯฮฑฮผฮผฮญฮฝฮท ฮผฮต ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚. ฮ— ฮฑฮบฮฟฮปฮฟฯ…ฮธฮฏฮฑ ฮดฮนฮฑฮฒฮฌฮถฮตฯ„ฮฑฮน ฯ‰ฯ‚ ฯ„ฯฮตฮนฯ‚ ฮตฯ€ฮฏฯ€ฮตฮดฮตฯ‚ ฮณฯฮฑฮผฮผฮญฯ‚ ฮฑฮฝฯ„ฮฏ ฮณฮนฮฑ ฯ„ฯฮฏฮฑ ฮตฯ€ฮฏฯ€ฮตฮดฮฑ ฮญฮฝฮธฮตฯƒฮทฯ‚.

ฮ•ฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚ vs. Generators

function* Messages() {
    console.log(yield Timedelay(1000));
    console.log(yield Timedelay(2000));
    console.log(yield Timedelay(3000));
}

Code ฮตฮพฮฎฮณฮทฯƒฮท

  1. ฮœฮนฮฑ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑฯ‚ ฮฟฯฮฏฮถฮตฯ„ฮฑฮน ฮณฮนฮฑ ฮฝฮฑ ฮบฮฑฮปฮตฮฏ ฯ„ฮทฮฝ Timedelay ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮฏฮฑ.
  2. yield ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮผฮต Timedelay ฮบฮฑฮน 1000 ฯ‰ฯ‚ ฯ„ฮนฮผฮฎ ฯ€ฮฑฯฮฑฮผฮญฯ„ฯฮฟฯ….
  3. yield ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮตฮฏฯ„ฮฑฮน ฮพฮฑฮฝฮฌ ฮผฮต ฯ„ฮฟ 2000 ฮบฮฑฮน ฮพฮฑฮฝฮฌ ฮผฮต ฯ„ฮฟ 3000.

โš ๏ธ ฮ”ฮนฯŒฯฮธฯ‰ฯƒฮท: ฯ„ฮฟ ฯ€ฯฯ‰ฯ„ฯŒฯ„ฯ…ฯ€ฮฟ ฮญฮณฯฮฑฯˆฮต console,log(...) ฮผฮต ฮบฯŒฮผฮผฮฑ ฮฑฮฝฯ„ฮฏ ฮณฮนฮฑ ฯ„ฮตฮปฮตฮฏฮฑ ฮบฮฑฮน ฯƒฯ„ฮนฯ‚ ฯ„ฯฮตฮนฯ‚ ฮณฯฮฑฮผฮผฮญฯ‚, ฮบฮฌฯ„ฮน ฯ€ฮฟฯ… ฮฑฯ€ฮฟฯ„ฮตฮปฮตฮฏ ฯƒฯ…ฮฝฯ„ฮฑฮบฯ„ฮนฮบฯŒ ฯƒฯ†ฮฌฮปฮผฮฑ ฮบฮฑฮน ฮตฮผฯ€ฮฟฮดฮฏฮถฮตฮน ฯ„ฮทฮฝ ฮฑฮฝฮฌฮปฯ…ฯƒฮท ฯ„ฮฟฯ… ฮฑฯฯ‡ฮตฮฏฮฟฯ….

ฮ ฯŽฯ‚ ฮฝฮฑ ฮตฮบฯ„ฮตฮปฮญฯƒฮตฯ„ฮต ฮฑ Generator ฮผฮต ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮฏฮฑ Runner

ฮ— ฯ€ฮฑฯฮฑฯ€ฮฌฮฝฯ‰ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฮดฮนฮฑฮฒฮฌฮถฮตฯ„ฮฑฮน ฯŒฮผฮฟฯฯ†ฮฑ, ฮฑฮปฮปฮฌ ฮดฮตฮฝ ฮบฮฌฮฝฮตฮน ฯ„ฮฏฯ€ฮฟฯ„ฮฑ ฮฑฯ€ฯŒ ฮผฯŒฮฝฮท ฯ„ฮทฯ‚. ฮ‘ฯ…ฯ„ฮฎ ฮตฮฏฮฝฮฑฮน ฮท ฮปฮตฯ€ฯ„ฮฟฮผฮญฯฮตฮนฮฑ ฯ€ฮฟฯ… ฮฟฮน ฯ€ฮตฯฮนฯƒฯƒฯŒฯ„ฮตฯฮตฯ‚ ฮตฮพฮทฮณฮฎฯƒฮตฮนฯ‚ ฯ€ฮฑฯฮฑฮปฮตฮฏฯ€ฮฟฯ…ฮฝ ฮบฮฑฮน ฮฑฯ…ฯ„ฯŒฯ‚ ฮตฮฏฮฝฮฑฮน ฮฟ ฮปฯŒฮณฮฟฯ‚ ฯ€ฮฟฯ… ฮท ฮตฯ€ฮฏฯ€ฮตฮดฮท ฮญฮบฮดฮฟฯƒฮท ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฮผฮฟฮนฮฌฮถฮตฮน ฮผฮฑฮณฮนฮบฮฎ. ฮœฮนฮฑ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑ ฮผฮทฯ‡ฮฌฮฝฮทฮผฮฑ ฯƒฮต ฯ€ฮฑฯฯƒฮท ฮบฮฑฮน ฮบฮฌฯ„ฮน ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฯ€ฮฑฯ„ฮฌฮตฮน ฯƒฯ…ฮฝฮตฯ‡ฯŽฯ‚ ฯ„ฮฟ ฮบฮฟฯ…ฮผฯ€ฮฏ. ฮšฮปฮฎฯƒฮท Messages() ฮฑฯ€ฮปฯŽฯ‚ ฮดฮทฮผฮนฮฟฯ…ฯฮณฮตฮฏ ฯ„ฮฟ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑฯ‚ ฮบฮฑฮน ฮตฯ€ฮนฯƒฯ„ฯฮญฯ†ฮตฮน ฮฑฮผฮญฯƒฯ‰ฯ‚. ฮ”ฮตฮฝ ฮพฮตฮบฮนฮฝฮฌ ฯ€ฮฟฯ„ฮญ ฮบฮฑฮฝฮญฮฝฮฑฯ‚ ฯ‡ฯฮฟฮฝฮฟฮดฮนฮฑฮบฯŒฯ€ฯ„ฮทฯ‚ ฮบฮฑฮน ฮดฮตฮฝ ฮตฮบฯ„ฯ…ฯ€ฯŽฮฝฮตฯ„ฮฑฮน ฯ„ฮฏฯ€ฮฟฯ„ฮฑ.

ฮคฮฟ ฮบฮฟฮผฮผฮฌฯ„ฮน ฯ€ฮฟฯ… ฮปฮตฮฏฯ€ฮตฮน ฮตฮฏฮฝฮฑฮน ฮญฮฝฮฑฯ‚ runner: ฮผฮนฮฑ ฮผฮนฮบฯฮฎ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ€ฮฟฯ… ฮบฮฑฮปฮตฮฏ next(), ฯ€ฮตฯฮนฮผฮญฮฝฮตฮน ฮฝฮฑ ฮฟฮปฮฟฮบฮปฮทฯฯ‰ฮธฮตฮฏ ฮท ฮฑฯƒฯฮณฯ‡ฯฮฟฮฝฮท ฮตฯฮณฮฑฯƒฮฏฮฑ ฮบฮฑฮน ฯƒฯ„ฮท ฯƒฯ…ฮฝฮญฯ‡ฮตฮนฮฑ ฮบฮฑฮปฮตฮฏ next() ฯ€ฮฌฮปฮน ฮผฮต ฯ„ฮฟ ฮฑฯ€ฮฟฯ„ฮญฮปฮตฯƒฮผฮฑ.

// Timedelay now hands its result back to the runner
function Timedelay(ptime) {
    return function(resume) {
        setTimeout(function() {
            resume("Pausing for " + ptime);
        }, ptime);
    };
}

// The runner drives the generator to completion
function run(generatorFunction) {
    var it = generatorFunction();

    function step(value) {
        var result = it.next(value);
        if (result.done) return;
        // result.value is the function returned by Timedelay
        result.value(step);
    }

    step();
}

run(Messages);

ฮคฯฮฏฮฑ ฯƒฮทฮผฮตฮฏฮฑ ฯ„ฮฟ ฮบฮฑฮธฮนฯƒฯ„ฮฟฯฮฝ ฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮนฮบฯŒ. ฮ ฯฯŽฯ„ฮฟฮฝ, Timedelay ฮดฮตฮฝ ฮดฮญฯ‡ฮตฯ„ฮฑฮน ฯ€ฮปฮญฮฟฮฝ ฮฑฯ€ฮตฯ…ฮธฮตฮฏฮฑฯ‚ ฮผฮนฮฑ ฮตฯ€ฮฑฮฝฮฌฮบฮปฮทฯƒฮท. ฮ•ฯ€ฮนฯƒฯ„ฯฮญฯ†ฮตฮน ฮผฮนฮฑ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ€ฮฟฯ… ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฮบฮฑฮปฮญฯƒฮตฮน ฮฟ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮฎฯ‚, ฮตฯ€ฮนฯƒฯ„ฯฮญฯ†ฮฟฮฝฯ„ฮฑฯ‚ ฯ„ฮฟฮฝ ฮญฮปฮตฮณฯ‡ฮฟ ฯŒฯ„ฮฑฮฝ ฮตฮฝฮตฯฮณฮฟฯ€ฮฟฮนฮทฮธฮตฮฏ ฮฟ ฯ‡ฯฮฟฮฝฮฟฮดฮนฮฑฮบฯŒฯ€ฯ„ฮทฯ‚. ฮ”ฮตฯฯ„ฮตฯฮฟฮฝ, it.next(value) ฯ„ฯฮฟฯ†ฮฟฮดฮฟฯ„ฮตฮฏ ฯ„ฮฟ ฯ€ฯฮฟฮทฮณฮฟฯฮผฮตฮฝฮฟ ฮฑฯ€ฮฟฯ„ฮญฮปฮตฯƒฮผฮฑ ฯƒฯ„ฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฯ€ฮฟฯ… ฮญฯ‡ฮตฮน ฯƒฯ„ฮฑฮผฮฑฯ„ฮฎฯƒฮตฮน, ฮบฮฌฯ„ฮน ฯ€ฮฟฯ… ฮตฯ€ฮนฯ„ฯฮญฯ€ฮตฮน yield ฮฝฮฑ ฮตฮผฯ†ฮฑฮฝฮฏฮถฮตฯ„ฮฑฮน ฯƒฯ„ฮท ฮดฮตฮพฮนฮฌ ฯ€ฮปฮตฯ…ฯฮฌ ฮผฮนฮฑฯ‚ ฮฑฮฝฮฌฮธฮตฯƒฮทฯ‚. ฮคฯฮฏฯ„ฮฟฮฝ, ฮฟ ฮดฯฮฟฮผฮญฮฑฯ‚ ฯƒฯ„ฮฑฮผฮฑฯ„ฮฌฮตฮน ฮผฯŒฮปฮนฯ‚ result.done ฮณฮฏฮฝฮตฯ„ฮฑฮน ฮฑฮปฮทฮธฮฎฯ‚, ฮตฯ€ฮฟฮผฮญฮฝฯ‰ฯ‚ ฮท ฮฑฮฝฮฑฮดฯฮฟฮผฮฎ ฯ„ฮตฯฮผฮฑฯ„ฮฏฮถฮตฯ„ฮฑฮน ฯ†ฯ…ฯƒฮนฮบฮฌ. ฮ‘ฯ…ฯ„ฯŒ ฯ„ฮฟ ฮผฮฟฯ„ฮฏฮฒฮฟ ฮตฮบฯ„ฮญฮปฮตฯƒฮทฯ‚ ฮตฮฏฮฝฮฑฮน ฮฑฮบฯฮนฮฒฯŽฯ‚ ฮฑฯ…ฯ„ฯŒ ฯ€ฮฟฯ… ฯ€ฮฑฯฮตฮฏฯ‡ฮฑฮฝ ฮฒฮนฮฒฮปฮนฮฟฮธฮฎฮบฮตฯ‚ ฯŒฯ€ฯ‰ฯ‚ ฮท co, ฮบฮฑฮน ฮตฮฏฮฝฮฑฮน ฮฟ ฮผฮทฯ‡ฮฑฮฝฮนฯƒฮผฯŒฯ‚ ฯ€ฮฟฯ… async/await ฮฑฯฮณฯŒฯ„ฮตฯฮฑ ฮฑฯ€ฮฟฯฯฮฟฯ†ฮฎฮธฮทฮบฮต ฮฑฯ€ฯŒ ฯ„ฮทฮฝ ฮฏฮดฮนฮฑ ฯ„ฮท ฮณฮปฯŽฯƒฯƒฮฑ.

Generators vs async/await: ฮ ฮฟฮนฮฟ ฮฝฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮฎฯƒฮตฯ„ฮต

Generatorฮคฮฑ s ฮฎฯ„ฮฑฮฝ ฮฟ ฯ„ฯ…ฯ€ฮนฮบฯŒฯ‚ ฯ„ฯฯŒฯ€ฮฟฯ‚ ฮณฮนฮฑ ฮฝฮฑ ฮณฯฮฌฯ†ฮตฯ„ฮฑฮน ฮตฯ€ฮฏฯ€ฮตฮดฮฟฯ‚ ฮฑฯƒฯฮณฯ‡ฯฮฟฮฝฮฟฯ‚ ฮบฯŽฮดฮนฮบฮฑฯ‚ ฯ€ฯฮนฮฝ async/await ฯ…ฯ€ฮฎฯฯ‡ฮต ฮบฮฑฮน ฮฟฮน ฮดฯฮฟ ฮผฮฟฮนฯฮฌฮถฮฟฮฝฯ„ฮฑฮน ฯ„ฮทฮฝ ฮฏฮดฮนฮฑ ฯ…ฯ€ฮฟฮบฮตฮฏฮผฮตฮฝฮท ฮนฮดฮญฮฑ ฯ„ฮทฯ‚ ฯ€ฮฑฯฯƒฮทฯ‚ ฮผฮนฮฑฯ‚ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮทฯ‚ ฯƒฯ„ฮท ฮผฮญฯƒฮท. ฮŸ Node ฮญฯ‡ฮตฮน ฯ…ฯ€ฮฟฯƒฯ„ฮทฯฮฏฮพฮตฮน async/await ฮตฮณฮณฮตฮฝฯŽฯ‚ ฮฑฯ€ฯŒ ฯ„ฮทฮฝ ฮญฮบฮดฮฟฯƒฮท 7.6, ฮท ฮฟฯ€ฮฟฮฏฮฑ ฮฑฮปฮปฮฌฮถฮตฮน ฯ„ฮท ฯƒฯฯƒฯ„ฮฑฯƒฮท ฮณฮนฮฑ ฯŒฯ€ฮฟฮนฮฟฮฝ ฮพฮตฮบฮนฮฝฮฌฮตฮน ฮฝฮญฮฑ ฮตฯฮณฮฑฯƒฮฏฮฑ ฯƒฮฎฮผฮตฯฮฑ.

ฮ†ฯ€ฮฟฯˆฮท Generators ฮฑฯƒฯฮณฯ‡ฯฮฟฮฝฮท/ฮฑฮฝฮฑฮผฮฟฮฝฮฎ
ฮ–ฮทฯ„ฮตฮฏฯ„ฮฑฮน ฮดฯฮฟฮผฮญฮฑฯ‚ ฮฮฑฮน, ฮณฯฮฑฮผฮผฮญฮฝฮฟ ฮฑฯ€ฯŒ ฮตฯƒฮฌฯ‚ ฮฎ ฮฑฯ€ฯŒ ฮผฮนฮฑ ฮฒฮนฮฒฮปฮนฮฟฮธฮฎฮบฮท ฮŒฯ‡ฮน, ฮตฮฝฯƒฯ‰ฮผฮฑฯ„ฯ‰ฮผฮญฮฝฮฟ ฯƒฯ„ฮท ฮณฮปฯŽฯƒฯƒฮฑ
ฮ ฮฑฯฯƒฮท ฮปฮญฮพฮทฯ‚-ฮบฮปฮตฮนฮดฮนฮฟฯ yield await
ฮฃฯ†ฮฌฮปฮผฮฑ ฯ‡ฮตฮนฯฮนฯƒฮผฮฟฯ ฮŸ ฮดฯฮฟฮผฮญฮฑฯ‚ ฯ€ฯฮญฯ€ฮตฮน ฮฝฮฑ ฯ€ฯฮฟฯ‰ฮธฮฎฯƒฮตฮน ฯƒฯ†ฮฌฮปฮผฮฑฯ„ฮฑ ฮฃฯ…ฮฝฮทฮธฮนฯƒฮผฮญฮฝฮท ฯ€ฯฮฟฯƒฯ€ฮฌฮธฮตฮนฮฑ ฮบฮฑฮน ฯ€ฮนฮฌฯƒฮนฮผฮฟ
ฮœฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฮดฮนฮฑฮบฮฟฯ€ฮตฮฏ ฯ€ฯฮฟฯƒฯ‰ฯฮนฮฝฮฌ ฮฮฑฮน, ฮบฮฑฮน ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฮตฯ€ฮฑฮฝฮฑฮปฮทฯ†ฮธฮตฮฏ ฮตฯ€ฮนฮปฮตฮบฯ„ฮนฮบฮฌ ฮŒฯ‡ฮน, ฮตฮบฯ„ฮตฮปฮตฮฏฯ„ฮฑฮน ฮผฮญฯ‡ฯฮน ฯ„ฮทฮฝ ฮฟฮปฮฟฮบฮปฮฎฯฯ‰ฯƒฮฎ ฯ„ฮฟฯ…
ฮบฮฑฮปฯ…ฯ„ฮตฯฮฑ for ฮ‘ฯฮณฮญฯ‚ ฮฑฮบฮฟฮปฮฟฯ…ฮธฮฏฮตฯ‚ ฮบฮฑฮน ฮฌฯ€ฮตฮนฯฮตฯ‚ ฯฮฟฮญฯ‚ ฮฃฯ…ฮฝฮฎฮธฮทฯ‚ ฮฑฯƒฯฮณฯ‡ฯฮฟฮฝฮท ฮตฯฮณฮฑฯƒฮฏฮฑ

ฮงฯฮฎฯƒฮท async/await ฮณฮนฮฑ ฮฑฯƒฯฮณฯ‡ฯฮฟฮฝฮท ฯฮฟฮฎ ฯƒฮต ฮฝฮญฮฟ ฮบฯŽฮดฮนฮบฮฑ, ฮบฮฑฮธฯŽฯ‚ ฮฑฯ†ฮฑฮนฯฮตฮฏ ฯ„ฮฟฮฝ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮฎ ฮบฮฑฮน ฮตฯ€ฮฑฮฝฮฑฯ†ฮญฯฮตฮน ฯ„ฮทฮฝ ฯƒฯ…ฮฝฮทฮธฮนฯƒฮผฮญฮฝฮท ฯ€ฯฮฟฯƒฯ€ฮฌฮธฮตฮนฮฑ ฮบฮฑฮน ฯ„ฮฟ ฮฑฮปฮฏฮตฯ…ฮผฮฑ. ฮ”ฮนฮฑฯ„ฮทฯฮฎฯƒฯ„ฮต ฯ„ฮนฯ‚ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚ ฮผฯŒฮฝฮฟ ฮณฮนฮฑ ฮฑฯ…ฯ„ฯŒ ฯ€ฮฟฯ… ฮบฮฌฮฝฮฟฯ…ฮฝ ฮบฮฑฮปฮฌ: ฯ€ฮฑฯฮฑฮณฯ‰ฮณฮฎ ฯ„ฮนฮผฯŽฮฝ ฮฑฯฮณฮฌ, ฮตฯ€ฮฑฮฝฮฌฮปฮทฯˆฮท ฮผฮตฮณฮฌฮปฯ‰ฮฝ ฮฎ ฮฌฯ€ฮตฮนฯฯ‰ฮฝ ฮฑฮบฮฟฮปฮฟฯ…ฮธฮนฯŽฮฝ ฮบฮฑฮน ฮบฮฌฮธฮต ฯ€ฮตฯฮฏฯ€ฯ„ฯ‰ฯƒฮท ฯŒฯ€ฮฟฯ… ฮฟ ฮบฮฑฯ„ฮฑฮฝฮฑฮปฯ‰ฯ„ฮฎฯ‚ ฮฑฯ€ฮฟฯ†ฮฑฯƒฮฏฮถฮตฮน ฮฑฮบฯฮนฮฒฯŽฯ‚ ฯ€ฯŒฯ„ฮต ฯ…ฯ€ฮฟฮปฮฟฮณฮฏฮถฮตฯ„ฮฑฮน ฮท ฮตฯ€ฯŒฮผฮตฮฝฮท ฯ„ฮนฮผฮฎ.

ฮšฮฟฮนฮฝฯŒฯ‚ Generator ฮฃฯ†ฮฌฮปฮผฮฑฯ„ฮฑ ฮบฮฑฮน ฯ€ฯŽฯ‚ ฮฝฮฑ ฯ„ฮฑ ฮดฮนฮฟฯฮธฯŽฯƒฮตฯ„ฮต

ฮคฮฑ ฯ€ฮตฯฮนฯƒฯƒฯŒฯ„ฮตฯฮฑ ฯ€ฯฮฟฮฒฮปฮฎฮผฮฑฯ„ฮฑ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑฯ‚ ฯ€ฯฮฟฮญฯฯ‡ฮฟฮฝฯ„ฮฑฮน ฮฑฯ€ฯŒ ฯ„ฮฟ ฮฝฮฑ ฮพฮตฯ‡ฮฝฮฌฮผฮต ฯŒฯ„ฮน ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮตฮฏฮฝฮฑฮน ฮฑฮดฯฮฑฮฝฮฎฯ‚ ฮผฮญฯ‡ฯฮน ฮฝฮฑ ฮบฮฑฮปฮญฯƒฮฟฯ…ฮผฮต ฮบฮฌฯ„ฮน. next(), ฮฎ ฮฑฯ€ฯŒ ฮผฮนฮบฯฮฌ ฯƒฯ…ฮฝฯ„ฮฑฮบฯ„ฮนฮบฮฌ ฮฟฮปฮนฯƒฮธฮฎฮผฮฑฯ„ฮฑ ฮณฯฯฯ‰ ฮฑฯ€ฯŒ ฯ„ฮฟฮฝ ฮฑฯƒฯ„ฮตฯฮฏฯƒฮบฮฟ. ฮšฮฌฮธฮต ฯƒฯฮผฯ€ฯ„ฯ‰ฮผฮฑ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮบฮฑฯ„ฮฟฮฝฮฟฮผฮฌฮถฮตฮน ฯ„ฮทฮฝ ฮฑฮนฯ„ฮฏฮฑ ฮบฮฑฮน ฯ„ฮท ฮปฯฯƒฮท ฯ„ฮฟฯ….

  • ฮ”ฮตฮฝ ฯƒฯ…ฮผฮฒฮฑฮฏฮฝฮตฮน ฯ„ฮฏฯ€ฮฟฯ„ฮฑ ฯŒฯ„ฮฑฮฝ ฮบฮฑฮปฮตฮฏฯ„ฮฑฮน ฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ: ฮ— ฮบฮปฮฎฯƒฮท ฯ„ฮฟฯ… ฮตฯ€ฮนฯƒฯ„ฯฮญฯ†ฮตฮน ฮญฮฝฮฑฮฝ ฮตฯ€ฮฑฮฝฮฑฮปฮฎฯ€ฯ„ฮท, ฯŒฯ‡ฮน ฮฑฯ€ฮฟฯ„ฮญฮปฮตฯƒฮผฮฑ. ฮ— ฮบฮปฮฎฯƒฮท next()ฮฎ ฮดฯŽฯƒฯ„ฮต ฯ„ฮฟ ฯƒฮต ฮญฮฝฮฑฮฝ ฮดฯฮฟฮผฮญฮฑ.
  • ฮฃฯ†ฮฌฮปฮผฮฑ ฯƒฯฮฝฯ„ฮฑฮพฮทฯ‚ ฯƒฯ„ฮทฮฝ ฮฑฯ€ฯŒฮดฮฟฯƒฮท: ฮฟ ฮฑฯƒฯ„ฮตฯฮฏฯƒฮบฮฟฯ‚ ฮปฮตฮฏฯ€ฮตฮน. yield ฮนฯƒฯ‡ฯฮตฮน ฮผฯŒฮฝฮฟ ฮตฮฝฯ„ฯŒฯ‚ ฮตฮฝฯŒฯ‚ function*.
  • ฮ— ฯ„ฮนฮผฮฎ ฮฑฯ€ฯŒ ฯ„ฮทฮฝ next() ฯ†ฯ„ฮฌฮฝฮตฮน ฮฑฯ€ฯฮฟฯƒฮดฮนฯŒฯฮนฯƒฯ„ฮท: ฮท ฯ€ฯฯŽฯ„ฮท next() ฮ— ฮบฮปฮฎฯƒฮท ฮดฮตฮฝ ฮผฯ€ฮฟฯฮตฮฏ ฮฝฮฑ ฯ€ฮฑฯฮฑฮดฯŽฯƒฮตฮน ฮผฮนฮฑ ฯ„ฮนฮผฮฎ, ฮตฯ€ฮตฮนฮดฮฎ ฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฮดฮตฮฝ ฮญฯ‡ฮตฮน ฯ†ฯ„ฮฌฯƒฮตฮน ฯƒฮต ฮญฮฝฮฑ yield ฮฑฮบฯŒฮผฮฑ. ฮ‘ฯ€ฮฟฯƒฯ„ฮฟฮปฮฎ ฮดฮตฮดฮฟฮผฮญฮฝฯ‰ฮฝ ฮฑฯ€ฯŒ ฯ„ฮท ฮดฮตฯฯ„ฮตฯฮท ฮบฮปฮฎฯƒฮท ฮบฮฑฮน ฮผฮตฯ„ฮฌ.
  • ฮ†ฯ€ฮตฮนฯฮฟฯ‚ ฮฒฯฯŒฯ‡ฮฟฯ‚ ฯƒฮต ฮญฮฝฮฑฮฝ ฮดฯฮฟฮผฮญฮฑ: result.done ฮดฮตฮฝ ฮตฮปฮญฮณฯ‡ฮตฯ„ฮฑฮน ฯ€ฮฟฯ„ฮญ, ฮตฯ€ฮฟฮผฮญฮฝฯ‰ฯ‚ next() ฮ— ฮบฮปฮฎฯƒฮท ฯƒฯ…ฮฝฮตฯ‡ฮฏฮถฮตฯ„ฮฑฮน ฮผฮตฯ„ฮฌ ฯ„ฮฟ ฯ„ฮญฮปฮฟฯ‚. ฮ•ฯ€ฮนฯƒฯ„ฯฮญฯ†ฮตฮน ฯ€ฮฌฮฝฯ„ฮฑ ฯŒฯ„ฮฑฮฝ ฮท ฯ„ฮนฮผฮฎ "ฮฟฮปฮฟฮบฮปฮทฯฯŽฮธฮทฮบฮต" ฮตฮฏฮฝฮฑฮน ฮฑฮปฮทฮธฮฎฯ‚.
  • ฮคฮฑ ฯƒฯ†ฮฌฮปฮผฮฑฯ„ฮฑ ฮตฮพฮฑฯ†ฮฑฮฝฮฏฮถฮฟฮฝฯ„ฮฑฮน ฯƒฮนฯ‰ฯ€ฮทฮปฮฌ: ฮœฮนฮฑ ฮฑฯ€ฯŒฯฯฮนฯˆฮท ฮตฮฝฯ„ฯŒฯ‚ ฯ„ฮฟฯ… ฮฑฯƒฯฮณฯ‡ฯฮฟฮฝฮฟฯ… ฮฒฮฎฮผฮฑฯ„ฮฟฯ‚ ฮดฮตฮฝ ฮตฯ€ฮนฯƒฯ„ฯฮญฯ†ฮตฯ„ฮฑฮน ฯ€ฮฟฯ„ฮญ ฯƒฯ„ฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ. ฮ ฯฮฟฯ‰ฮธฮฎฯƒฯ„ฮต ฯ„ฮทฮฝ ฮผฮต it.throw(err) ฮญฯ„ฯƒฮน ฯŽฯƒฯ„ฮต ฮผฮนฮฑ ฮตฮฝฯ„ฮฟฮปฮฎ try-and-catch ฮณฯฮฑฮผฮผฮญฮฝฮท ฮผฮญฯƒฮฑ ฯƒฯ„ฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฮฝฮฑ ฮผฯ€ฮฟฯฮตฮฏ ฯ€ฯฮฑฮณฮผฮฑฯ„ฮนฮบฮฌ ฮฝฮฑ ฯ„ฮฟ ฮดฮตฮน ฮบฮฑฮน ฮฝฮฑ ฯ„ฮฟ ฯ‡ฮตฮนฯฮนฯƒฯ„ฮตฮฏ.

ฮฃฯ…ฯ‡ฮฝฮญฯ‚ ฮ•ฯฯ‰ฯ„ฮฎฯƒฮตฮนฯ‚

ฮˆฮฝฮฑ ฮฑฮฝฯ„ฮนฮบฮตฮฏฮผฮตฮฝฮฟ ฮผฮต ฮดฯฮฟ ฮนฮดฮนฯŒฯ„ฮทฯ„ฮตฯ‚: value, ฮบฯฮฑฯ„ฯŽฮฝฯ„ฮฑฯ‚ ฯŒ,ฯ„ฮน ฮฑฯ€ฮฟฮดฯŒฮธฮทฮบฮต, ฮบฮฑฮน done, ฮผฮนฮฑ ฮปฮฟฮณฮนฮบฮฎ ฯ„ฮนฮผฮฎ ฯ€ฮฟฯ… ฮณฮฏฮฝฮตฯ„ฮฑฮน ฮฑฮปฮทฮธฮฎฯ‚ ฮผฯŒฮปฮนฯ‚ ฮฟฮปฮฟฮบฮปฮทฯฯ‰ฮธฮตฮฏ ฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ. ฮŸฮน ฮดฯฮฟฮผฮตฮฏฯ‚ ฮดฮฟฮบฮนฮผฮฌฮถฮฟฮฝฯ„ฮฑฮน ฮณฮนฮฑ ฮฝฮฑ ฮณฮฝฯ‰ฯฮฏฮถฮฟฯ…ฮฝ ฯ€ฯŒฯ„ฮต ฮฝฮฑ ฯƒฯ„ฮฑฮผฮฑฯ„ฮฎฯƒฮฟฯ…ฮฝ.

ฮฮฑฮน. ฮœฮนฮฑ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฯ€ฮฟฯ… ฯ€ฮตฯฮนฮญฯ‡ฮตฮน ฮญฮฝฮฑฮฝ ฮฑฯ„ฮญฯฮผฮฟฮฝฮฑ ฮฒฯฯŒฯ‡ฮฟ ฮตฮฏฮฝฮฑฮน ฮฑฯƒฯ†ฮฑฮปฮฎฯ‚ ฮตฯ€ฮตฮนฮดฮฎ ฯ„ฮฏฯ€ฮฟฯ„ฮฑ ฮดฮตฮฝ ฯ…ฯ€ฮฟฮปฮฟฮณฮฏฮถฮตฯ„ฮฑฮน ฮผฮญฯ‡ฯฮน ฮฝฮฑ ฮบฮปฮทฮธฮตฮฏ ฮท next(). ฮ‘ฯ…ฯ„ฯŒ ฮบฮฑฮธฮนฯƒฯ„ฮฌ ฯ„ฮนฯ‚ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚ ฮบฮฑฯ„ฮฌฮปฮปฮทฮปฮตฯ‚ ฮณฮนฮฑ ฯฮฟฮญฯ‚ ฮฑฮฝฮฑฮณฮฝฯ‰ฯฮนฯƒฯ„ฮนฮบฯŽฮฝ ฮฎ ฯƒฮตฮปฮนฮดฮฟฯ€ฮฟฮนฮทฮผฮญฮฝฮฑ ฮฑฯ€ฮฟฯ„ฮตฮปฮญฯƒฮผฮฑฯ„ฮฑ.

ฮฮฑฮฏ. AI ฮคฮฑ ฮตฯฮณฮฑฮปฮตฮฏฮฑ ฮฑฮฝฯ„ฮฑฮปฮปฮฌฯƒฯƒฮฟฯ…ฮฝ ฯ„ฮทฮฝ ฮฑฯ€ฯŒฮดฮฟฯƒฮท ฮผฮต ฯ„ฮทฮฝ ฮฑฮฝฮฑฮผฮฟฮฝฮฎ ฮบฮฑฮน ฮตฮณฮบฮฑฯ„ฮฑฮปฮตฮฏฯ€ฮฟฯ…ฮฝ ฮตฮฝฯ„ฮตฮปฯŽฯ‚ ฯ„ฮฟฮฝ ฮดฯฮฟฮผฮญฮฑ. Revฮ•ฮพฮตฯ„ฮฌฯƒฯ„ฮต ฯ€ฯฮฟฯƒฮตฮบฯ„ฮนฮบฮฌ ฯ„ฮนฯ‚ ฮฑฯฮณฮญฯ‚ ฮฑฮบฮฟฮปฮฟฯ…ฮธฮฏฮตฯ‚, ฮตฯ€ฮตฮนฮดฮฎ ฮผฮนฮฑ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ ฯ€ฮฟฯ… ฮดฮตฮฝ ฮฟฮปฮฟฮบฮปฮทฯฯŽฮฝฮตฯ„ฮฑฮน ฯ€ฮฟฯ„ฮญ ฮดฮตฮฝ ฮญฯ‡ฮตฮน ฮนฯƒฮฟฮดฯฮฝฮฑฮผฮฟ ฮฌฮผฮตฯƒฮทฯ‚ ฮฑฯƒฯฮณฯ‡ฯฮฟฮฝฮทฯ‚ ฮฑฮฝฮฑฮผฮฟฮฝฮฎฯ‚.

ฮ’ฮฟฮทฮธฮฟฮฏ AI tracฮต. ฮฑฮฝ ฮฟ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮฎฯ‚ ฯƒฯ„ฮฑฮผฮฌฯ„ฮทฯƒฮต ฮฝฮฑ ฮบฮฑฮปฮตฮฏ ฯƒฯ„ฮท ฯƒฯ…ฮฝฮญฯ‡ฮตฮนฮฑ, ฮฑฮฝ ฮดฮตฮฝ ฮบฮปฮฎฮธฮทฮบฮต ฯ€ฮฟฯ„ฮญ ฮผฮนฮฑ ฮตฯ€ฮฑฮฝฮฌฮบฮปฮทฯƒฮท ฯƒฯ…ฮฝฮญฯ‡ฮนฯƒฮทฯ‚ ฮฎ ฮฑฮฝ ฮดฮตฮฝ ฮตฯ€ฮนฯ„ฮตฯฯ‡ฮธฮทฮบฮต ฯ€ฮฟฯ„ฮญ ฯ„ฮฟ done. ฮ‘ฯ…ฯ„ฮฌ ฯ„ฮฑ ฯ„ฯฮฏฮฑ ฮตฯ…ฮธฯฮฝฮฟฮฝฯ„ฮฑฮน ฯƒฯ‡ฮตฮดฯŒฮฝ ฮณฮนฮฑ ฮบฮฌฮธฮต ฮฑฮบฮนฮฝฮทฯ„ฮฟฯ€ฮฟฮนฮทฮผฮญฮฝฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ.

ฮŒฯ‡ฮน. ฮˆฯ‡ฮตฮน ฮดฮทฮปฯ‰ฮธฮตฮฏ ฮผฮนฮฑ ฮฑฯƒฯฮณฯ‡ฯฮฟฮฝฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑ async function* ฮบฮฑฮน ฮบฮฑฯ„ฮฑฮฝฮฑฮปฯŽฮฝฮตฯ„ฮฑฮน ฮผฮต for await...ofฮฃฯ…ฮฝฮดฯ…ฮฌฮถฮตฮน ฮบฮฑฮน ฯ„ฮนฯ‚ ฮดฯฮฟ ฮนฮดฮญฮตฯ‚ ฮบฮฑฮน ฮตฮฏฮฝฮฑฮน ฮบฮฑฯ„ฮฌฮปฮปฮทฮปฮฟ ฮณฮนฮฑ ฯฮฟฮฎ ฮฑฯƒฯฮณฯ‡ฯฮฟฮฝฯ‰ฮฝ ฮดฮตฮดฮฟฮผฮญฮฝฯ‰ฮฝ, ฯŒฯ€ฯ‰ฯ‚ ฮดฯฮฟฮผฮตฮฏฯ‚ ฮฒฮฌฯƒฮตฯ‰ฮฝ ฮดฮตฮดฮฟฮผฮญฮฝฯ‰ฮฝ.

ฮฃฯ…ฮฝฮฟฯˆฮฏฯƒฯ„ฮต ฮฑฯ…ฯ„ฮฎฮฝ ฯ„ฮทฮฝ ฮฑฮฝฮฌฯฯ„ฮทฯƒฮท ฮผฮต: