Node.js Generators & Compare with Callbacks

ฮฃฮต ฮฑฯ…ฯ„ฯŒ ฯ„ฮฟ ฯƒฮตฮผฮนฮฝฮฌฯฮนฮฟ, ฮธฮฑ ฮผฮฌฮธฮฟฯ…ฮผฮต ฮณฮนฮฑ Generators ฮบฮฑฮน ฮฟฮน ฮดฮนฮฑฯ†ฮฟฯฮญฯ‚ ฯ„ฮฟฯ…ฯ‚ ฮผฮต ฯ„ฮฑ Callbacks

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

Generatorฮญฯ‡ฮฟฯ…ฮฝ ฮณฮฏฮฝฮตฮน ฮฑฯฮบฮตฯ„ฮฌ ฮดฮนฮฌฯƒฮทฮผฮฟฮน ฯƒฮต Node.js ฯ„ฮฟฮฝ ฯ„ฮตฮปฮตฯ…ฯ„ฮฑฮฏฮฟ ฮบฮฑฮนฯฯŒ ฮบฮฑฮน ฮฑฯ…ฯ„ฯŒ ฮฟฯ†ฮตฮฏฮปฮตฯ„ฮฑฮน ฯ€ฮนฮธฮฑฮฝฯŽฯ‚ ฯƒฮต ฮฑฯ…ฯ„ฯŒ ฯ€ฮฟฯ… ฮตฮฏฮฝฮฑฮน ฮนฮบฮฑฮฝฮฟฮฏ ฮฝฮฑ ฮบฮฌฮฝฮฟฯ…ฮฝ.

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

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

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

ฮ‘ฯ‚ ฮดฮฟฯฮผฮต ฮญฮฝฮฑ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮณฮนฮฑ ฯ„ฮฟ ฯ€ฯŽฯ‚ ฮผฯ€ฮฟฯฮฟฯฮฝ ฮฝฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮทฮธฮฟฯฮฝ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚.

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

Node.js Generators

function* Add(x) {
   yield x + 1;
   var y = yield(null);
   y = 6
   return x + y;
}

var gen = Add(5);

gen.next();

gen.next(); 

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

  1. ฮคฮฟ ฯ€ฯฯŽฯ„ฮฟ ฮฒฮฎฮผฮฑ ฮตฮฏฮฝฮฑฮน ฮฝฮฑ ฮฟฯฮฏฯƒฮฟฯ…ฮผฮต ฯ„ฮท ยซฮปฮตฮนฯ„ฮฟฯ…ฯฮณฮฏฮฑยป ฯ„ฮทฯ‚ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑฯ‚ ฮผฮฑฯ‚. ฮฃฮทฮผฮตฮนฯŽฯƒฯ„ฮต ฯŒฯ„ฮน ฮฑฯ…ฯ„ฯŒ ฮณฮฏฮฝฮตฯ„ฮฑฮน ฯ€ฯฮฟฯƒฮธฮญฯ„ฮฟฮฝฯ„ฮฑฯ‚ ฮญฮฝฮฑ ยซ*ยป ฯƒฯ„ฮท ฮปฮญฮพฮท-ฮบฮปฮตฮนฮดฮฏ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮทฯ‚. ฮฃฯ„ฮท ฯƒฯ…ฮฝฮญฯ‡ฮตฮนฮฑ ฮฟฯฮฏฮถฮฟฯ…ฮผฮต ฮผฮนฮฑ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฯ€ฮฟฯ… ฮฟฮฝฮฟฮผฮฌฮถฮตฯ„ฮฑฮน ฮ ฯฮฟฯƒฮธฮฎฮบฮท ฮท ฮฟฯ€ฮฟฮฏฮฑ ฯ€ฮฑฮฏฯฮฝฮตฮน ฮผฮนฮฑ ฯ€ฮฑฯฮฌฮผฮตฯ„ฯฮฟ x.
  2. ฮ— ฮปฮญฮพฮท-ฮบฮปฮตฮนฮดฮฏ ฮฑฯ€ฯŒฮดฮฟฯƒฮทฯ‚ ฮตฮฏฮฝฮฑฮน ฯƒฯ…ฮณฮบฮตฮบฯฮนฮผฮญฮฝฮท ฮณฮนฮฑ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚. ฮ‘ฯ…ฯ„ฯŒ ฯ„ฮฟ ฮบฮฑฮธฮนฯƒฯ„ฮฌ ฮผฮนฮฑ ฮนฯƒฯ‡ฯ…ฯฮฎ ฮบฮฑฯ„ฮฑฯƒฮบฮตฯ…ฮฎ ฮณฮนฮฑ ฯ„ฮทฮฝ ฯ€ฮฑฯฯƒฮท ฮผฮนฮฑฯ‚ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮทฯ‚ ฯƒฯ„ฮท ฮผฮญฯƒฮท ฯ„ฮฟฯ… ฮฟฯ„ฮนฮดฮฎฯ€ฮฟฯ„ฮต. ฮ•ฮดฯŽ ฮปฮฟฮนฯ€ฯŒฮฝ, ฮท ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฯ„ฮทฯ‚ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮทฯ‚ ฮธฮฑ ฯƒฯ„ฮฑฮผฮฑฯ„ฮฎฯƒฮตฮน ฮผฮญฯ‡ฯฮน ฮฝฮฑ ฮบฮฑฮปฮญฯƒฮฟฯ…ฮผฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท next(), ฮท ฮฟฯ€ฮฟฮฏฮฑ ฮธฮฑ ฮณฮฏฮฝฮตฮน ฯƒฯ„ฮฟ ฮ’ฮฎฮผฮฑ 4. ฮฃฮต ฮฑฯ…ฯ„ฯŒ ฯ„ฮฟ ฯƒฮทฮผฮตฮฏฮฟ, ฮท ฯ„ฮนฮผฮฎ ฯ„ฮฟฯ… x ฮธฮฑ ฮณฮฏฮฝฮตฮน 6 ฮบฮฑฮน ฮท ฮตฮบฯ„ฮญฮปฮตฯƒฮท ฯ„ฮทฯ‚ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮทฯ‚ ฮธฮฑ ฯƒฯ„ฮฑฮผฮฑฯ„ฮฎฯƒฮตฮน.
  3. ฮ•ฮดฯŽ ฮบฮฑฮปฮฟฯฮผฮต ฯ€ฯฯŽฯ„ฮฑ ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑฯ‚ ฮบฮฑฮน ฯƒฯ„ฮญฮปฮฝฮฟฯ…ฮผฮต ฯ„ฮทฮฝ ฯ„ฮนฮผฮฎ 5 ฯƒฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮ ฯฮฟฯƒฮธฮฎฮบฮท. ฮ‘ฯ…ฯ„ฮฎ ฮท ฯ„ฮนฮผฮฎ ฮธฮฑ ฮฑฮฝฯ„ฮนฮบฮฑฯ„ฮฑฯƒฯ„ฮฑฮธฮตฮฏ ฯƒฯ„ฮทฮฝ ฯ€ฮฑฯฮฌฮผฮตฯ„ฯฮฟ x ฯ„ฮทฯ‚ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮทฯ‚ ฮ ฯฮฟฯƒฮธฮฎฮบฮท.
  4. ฮœฯŒฮปฮนฯ‚ ฮบฮฑฮปฮญฯƒฮฟฯ…ฮผฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท next(), ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท Add() ฮธฮฑ ฯƒฯ…ฮฝฮตฯ‡ฮฏฯƒฮตฮน ฯ„ฮทฮฝ ฮตฮบฯ„ฮญฮปฮตฯƒฮท. ฮŒฯ„ฮฑฮฝ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮตฮฏ ฮท ฮตฯ€ฯŒฮผฮตฮฝฮท ฯ€ฯฯŒฯ„ฮฑฯƒฮท var y= yield(null), ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท Add() ฮธฮฑ ฯƒฯ„ฮฑฮผฮฑฯ„ฮฎฯƒฮตฮน ฮบฮฑฮน ฯ€ฮฌฮปฮน ฮฝฮฑ ฮตฮบฯ„ฮตฮปฮตฮฏฯ„ฮฑฮน.
  5. ฮคฯŽฯฮฑ ฮฑฯ†ฮฟฯ ฮบฮฑฮปฮญฯƒฮตฯ„ฮต ฮพฮฑฮฝฮฌ ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท next(), ฮธฮฑ ฮตฮบฯ„ฮตฮปฮตฯƒฯ„ฮฟฯฮฝ ฮฟฮน ฮตฯ€ฯŒฮผฮตฮฝฮตฯ‚ ฮตฮฝฯ„ฮฟฮปฮญฯ‚ ฮบฮฑฮน ฮท ฯƒฯ…ฮฝฮดฯ…ฮฑฯƒฮผฮญฮฝฮท ฯ„ฮนฮผฮฎ ฯ„ฯ‰ฮฝ x=5 ฮบฮฑฮน y=6 ฮธฮฑ ฯ€ฯฮฟฯƒฯ„ฮตฮธฮตฮฏ ฮบฮฑฮน ฮธฮฑ ฮตฯ€ฮนฯƒฯ„ฯฮฑฯ†ฮตฮฏ.

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

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

ฮ•ฮดฯŽ ฮตฮฏฮฝฮฑฮน ฯ‡ฯฮฎฯƒฮนฮผฮตฯ‚ ฮฟฮน ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚. ฮˆฮฝฮฑ ฮฑฯ€ฯŒ ฯ„ฮฑ ฯ€ฮนฮฟ ฯƒฯ…ฮฝฮทฮธฮนฯƒฮผฮญฮฝฮฑ ฯ€ฮฑฯฮฑฮดฮตฮฏฮณฮผฮฑฯ„ฮฑ ฮฑฯ…ฯ„ฮฟฯ ฮตฮฏฮฝฮฑฮน ฮบฮฑฯ„ฮฌ ฯ„ฮท ฮดฮทฮผฮนฮฟฯ…ฯฮณฮฏฮฑ ฯƒฯ…ฮฝฮฑฯฯ„ฮฎฯƒฮตฯ‰ฮฝ ฯ‡ฯฮฟฮฝฮฟฮดฮนฮฑฮบฯŒฯ€ฯ„ฮท.

ฮ‘ฯ‚ ฮดฮฟฯฮผฮต ฯ„ฮฟ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฯ€ฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮณฮนฮฑ ฯ„ฮฟ ฯ€ฯŽฯ‚ ฮฟฮน ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚ ฮผฯ€ฮฟฯฮฟฯฮฝ ฮฝฮฑ ฮฑฯ€ฮฟฮดฮตฮนฯ‡ฮธฮฟฯฮฝ ฯ‡ฯฮฎฯƒฮนฮผฮตฯ‚ ฯƒฮต ฯƒฯ‡ฮญฯƒฮท ฮผฮต ฯ„ฮนฯ‚ ฮตฯ€ฮฑฮฝฮฑฮบฮปฮฎฯƒฮตฮนฯ‚.

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

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

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

function Timedelay(ptime, callback) {

setTimeout(function() {
  
    callback("Pausing for " + ptime);
    
  }, time);
}

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

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

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

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

Timedelay(1000, function(message) {
  
  console.log(msg);
  Timedelay(2000, function(message) {
    
    console.log(msg);
    Timedelay(3000, function(message) {
      
      console.log(msg);
  })
  })
})

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

  1. ฮšฮฑฮปฮฟฯฮผฮต ฯ„ฮฟ Timedelay ฯ‰ฯ‚ ฮตฯ€ฮนฯƒฯ„ฯฮฟฯ†ฮฎ ฮบฮปฮฎฯƒฮทฯ‚ ฮผฮต 1000 ฯ‰ฯ‚ ฯ„ฮนฮผฮฎ.
  2. ฮฃฯ„ฮท ฯƒฯ…ฮฝฮญฯ‡ฮตฮนฮฑ ฮธฮญฮปฮฟฯ…ฮผฮต ฮฝฮฑ ฮบฮฑฮปฮญฯƒฮฟฯ…ฮผฮต ฮพฮฑฮฝฮฌ ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท Timedelay ฮผฮต ฯ„ฮฟ 2000 ฯ‰ฯ‚ ฯ„ฮนฮผฮฎ.
  3. ฮคฮญฮปฮฟฯ‚, ฮธฮญฮปฮฟฯ…ฮผฮต ฮฝฮฑ ฮบฮฑฮปฮญฯƒฮฟฯ…ฮผฮต ฮพฮฑฮฝฮฌ ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท Timedelay ฮผฮต 3000 ฯ‰ฯ‚ ฯ„ฮนฮผฮฎ.

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

ฮ’ฮฎฮผฮฑ 3) ฮคฯŽฯฮฑ ฮฑฯ‚ ฮดฮฟฯฮผฮต ฯ€ฯŽฯ‚ ฮฝฮฑ ฮตฯ†ฮฑฯฮผฯŒฯƒฮฟฯ…ฮผฮต ฯ„ฮฟฮฝ ฮฏฮดฮนฮฟ ฮบฯŽฮดฮนฮบฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฯŽฮฝฯ„ฮฑฯ‚ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚. ฮ‘ฯ€ฯŒ ฯ„ฮฟฮฝ ฯ€ฮฑฯฮฑฮบฮฌฯ„ฯ‰ ฮบฯŽฮดฮนฮบฮฑ ฮผฯ€ฮฟฯฮตฮฏฯ„ฮต ฯ„ฯŽฯฮฑ ฮฝฮฑ ฮดฮตฮฏฯ„ฮต ฯ€ฯŒฯƒฮฟ ฮฑฯ€ฮปฯŒ ฮญฯ‡ฮตฮน ฮณฮฏฮฝฮตฮน ฮท ฯ…ฮปฮฟฯ€ฮฟฮฏฮทฯƒฮท ฯ„ฮทฯ‚ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮทฯ‚ Timedelay ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฯŽฮฝฯ„ฮฑฯ‚ ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮตฯ‚.

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

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

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

  1. ฮ‘ฯฯ‡ฮนฮบฮฌ ฮฟฯฮฏฮถฮฟฯ…ฮผฮต ฮผฮนฮฑ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮณฮตฮฝฮฝฮฎฯ„ฯฮนฮฑฯ‚ ฯ€ฮฟฯ… ฮธฮฑ ฯ‡ฯฮทฯƒฮนฮผฮฟฯ€ฮฟฮนฮทฮธฮตฮฏ ฮณฮนฮฑ ฯ„ฮทฮฝ ฮบฮปฮฎฯƒฮท ฯ„ฮทฯ‚ ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮทฯ‚ Timedelay.
  2. ฮšฮฑฮปฮฟฯฮผฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท Yield ฮผฮฑฮถฮฏ ฮผฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท Timedelay ฮผฮต ฯ„ฮฟ 1000 ฯ‰ฯ‚ ฯ„ฮนฮผฮฎ ฯ€ฮฑฯฮฑฮผฮญฯ„ฯฮฟฯ….
  3. ฮฃฯ„ฮท ฯƒฯ…ฮฝฮญฯ‡ฮตฮนฮฑ ฮบฮฑฮปฮฟฯฮผฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท ฮฑฯ€ฯŒฮดฮฟฯƒฮทฯ‚ ฮผฮฑฮถฮฏ ฮผฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท Timedelay ฮผฮต ฯ„ฮฟ 2000 ฯ‰ฯ‚ ฯ„ฮนฮผฮฎ ฯ€ฮฑฯฮฑฮผฮญฯ„ฯฮฟฯ….
  4. ฮคฮญฮปฮฟฯ‚, ฮบฮฑฮปฮฟฯฮผฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท Yield ฮผฮฑฮถฮฏ ฮผฮต ฯ„ฮท ฯƒฯ…ฮฝฮฌฯฯ„ฮทฯƒฮท Timedelay ฮผฮต 3000 ฯ‰ฯ‚ ฯ„ฮนฮผฮฎ ฯ€ฮฑฯฮฑฮผฮญฯ„ฯฮฟฯ….

ฮ ฮตฯฮฏฮปฮทฯˆฮท

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

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