Node.js Generators & Compare with Callbacks
โก ฮฮพฯ ฯฮฝฮท ฮฃฯฮฝฮฟฯฮท
Generatorฮคฮฑ s ฯฯฮฟ Node.js ฮตฮฏฮฝฮฑฮน ฯฯ ฮฝฮฑฯฯฮฎฯฮตฮนฯ ฯฯฮฝ ฮฟฯฮฟฮฏฯฮฝ ฮท ฮตฮบฯฮญฮปฮตฯฮท ฮผฯฮฟฯฮตฮฏ ฮฝฮฑ ฮฑฮฝฮฑฯฯฮฑฮปฮตฮฏ ฮบฮฑฮน ฮฝฮฑ ฯฯ ฮฝฮตฯฮนฯฯฮตฮฏ ฮบฮฑฯ' ฮฑฯฮฑฮฏฯฮทฯฮท. ฮ ฮปฮญฮพฮท-ฮบฮปฮตฮนฮดฮฏ yield ฮธฮญฯฮตฮน ฯฮต ฯฮฑฯฯฮท ฯฮท ฯฯ ฮฝฮฌฯฯฮทฯฮท, ฮท ฮตฯฯฮผฮตฮฝฮท ฮผฮญฮธฮฟฮดฮฟฯ ฯฮทฮฝ ฯฯ ฮฝฮตฯฮฏฮถฮตฮน ฮบฮฑฮน ฮฑฯ ฯฮฎ ฮท ฮฑฮฝฯฮนฯฯฮฟฮฏฯฮนฯฮท ฮนฯฮฟฯฮตฮดฯฮฝฮตฮน ฯฮนฯ ฮฒฮฑฮธฮนฮฌ ฮญฮฝฮธฮตฯฮตฯ ฮตฯฮฑฮฝฮฑฮบฮปฮฎฯฮตฮนฯ ฯฮต ฮฑฮฝฮฑฮณฮฝฯฯฮนฮผฮฟ ฮดฮนฮฑฮดฮฟฯฮนฮบฯ ฮบฯฮดฮนฮบฮฑ.

ฮฃฮต ฮฑฯ ฯฮฎฮฝ ฯฮทฮฝ ฮฑฮฝฮฑฮปฯ ฯฮนฮบฮฎ ฯฮฑฯฮฟฯ ฯฮฏฮฑฯฮท ฮตฮพฮตฯฮฌฮถฮฟฯ ฮผฮต ฯฮนฯ ฮณฮตฮฝฮฝฮฎฯฯฮนฮตฯ ฮบฮฑฮน ฯฯฯ ฮดฮนฮฑฯฮญฯฮฟฯ ฮฝ ฮฑฯฯ ฯฮนฯ ฮตฯฮฑฮฝฮฑฮบฮปฮฎฯฮตฮนฯ.
ฮคฮน ฮตฮฏฮฝฮฑฮน ฮฟฮน ฮณฮตฮฝฮฝฮฎฯฯฮนฮตฯ;
Generators ฮญฮณฮนฮฝฮต ฮดฮทฮผฮฟฯฮนฮปฮญฯ ฯฮฟ Node.js ฮปฯฮณฯ ฮฑฯ ฯฯฮฝ ฯฮฟฯ ฮตฮฏฮฝฮฑฮน ฮนฮบฮฑฮฝฮฟฮฏ ฮฝฮฑ ฮบฮฌฮฝฮฟฯ ฮฝ.
- Generatorฮคฮฑ s ฮตฮฏฮฝฮฑฮน ฮตฮบฯฮตฮปฮญฯฮตฮนฯ ฯฯ ฮฝฮฑฯฯฮฎฯฮตฯฮฝ ฯฮฟฯ ฮผฯฮฟฯฮฟฯฮฝ ฮฝฮฑ ฮฑฮฝฮฑฯฯฮฑฮปฮฟฯฮฝ ฮบฮฑฮน ฮฝฮฑ ฯฯ ฮฝฮตฯฮนฯฯฮฟฯฮฝ ฯฮต ฮผฮตฯฮฑฮณฮตฮฝฮญฯฯฮตฯฮฟ ฯฮทฮผฮตฮฏฮฟ.
- Generatorฮคฮฑ s ฮตฮฏฮฝฮฑฮน ฯฯฮฎฯฮนฮผฮฑ ฮณฮนฮฑ ฮญฮฝฮฝฮฟฮนฮตฯ ฯฯฯฯ ฮท ยซฯฮตฮผฯฮญฮปฮทฯ ฮตฮบฯฮญฮปฮตฯฮทยป. ฮฮฝฮฑฯฯฮญฮปฮปฮฟฮฝฯฮฑฯ ฯฮทฮฝ ฮตฮบฯฮญฮปฮตฯฮท ฮบฮฑฮน ฯฯ ฮฝฮตฯฮฏฮถฮฟฮฝฯฮฑฯ ฮบฮฑฯฮฌ ฮฒฮฟฯฮปฮทฯฮท, ฮฟฮน ฯฮนฮผฮญฯ ฮตฮพฮฌฮณฮฟฮฝฯฮฑฮน ฮผฯฮฝฮฟ ฯฯฮฑฮฝ ฯฯฮตฮนฮฌฮถฮฟฮฝฯฮฑฮน.
Generatorฮญฯฮฟฯ ฮฝ ฯฮนฯ ฮดฯฮฟ ฮฒฮฑฯฮนฮบฮญฯ ฮผฮตฮธฯฮดฮฟฯ ฯ ฯฮฑฯฮฑฮบฮฌฯฯ.
- ฮฮญฮธฮฟฮดฮฟฯ ฮฑฯฯฮดฮฟฯฮทฯ โ ฮบฮฑฮปฮตฮฏฯฮฑฮน ฮผฮญฯฮฑ ฯฮต ฮผฮนฮฑ ฯฯ
ฮฝฮฌฯฯฮทฯฮท ฮณฮนฮฑ ฮฝฮฑ ฯฯฮฑฮผฮฑฯฮฎฯฮตฮน ฯฮทฮฝ ฮตฮบฯฮญฮปฮตฯฮท ฯฯฮทฮฝ ฮฑฮบฯฮนฮฒฮฎ ฮณฯฮฑฮผฮผฮฎ ฯฯฮฟฯ
yieldฮตฮผฯฮฑฮฝฮฏฮถฮตฯฮฑฮน. - ฮฯฯฮผฮตฮฝฮท ฮผฮญฮธฮฟฮดฮฟฯ โ ฮบฮปฮฎฮธฮทฮบฮต ฮฑฯฯ ฯฮทฮฝ ฮบฯฯฮนฮฑ ฮตฯฮฑฯฮผฮฟฮณฮฎ ฮณฮนฮฑ ฮฝฮฑ ฯฯ
ฮฝฮตฯฮนฯฯฮตฮฏ ฮผฮนฮฑ ฯฯ
ฮฝฮฌฯฯฮทฯฮท ฯฮฟฯ
ฮญฯฮตฮน ฮฑฯฮฟฮดฯฯฮตฮน. ฮ ฮตฮบฯฮญฮปฮตฯฮท ฯฯ
ฮฝฮตฯฮฏฮถฮตฯฮฑฮน ฮผฮญฯฯฮน ฯฮทฮฝ ฮตฯฯฮผฮตฮฝฮท
yield, ฮฎ ฮผฮญฯฯฮน ฯฮฟ ฯฮญฮปฮฟฯ ฯฮทฯ ฮปฮตฮนฯฮฟฯ ฯฮณฮฏฮฑฯ.
ฮฯ ฮดฮฟฯฮผฮต ฮญฮฝฮฑ ฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮณฮนฮฑ ฯฮฟ ฯฯฯ ฮผฯฮฟฯฮฟฯฮฝ ฮฝฮฑ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮทฮธฮฟฯฮฝ ฮฟฮน ฮณฮตฮฝฮฝฮฎฯฯฮนฮตฯ. ฮคฮฟ ฯฮฑฯฮฌฮดฮตฮนฮณฮผฮฑ ฮฟฯฮฏฮถฮตฮน ฮผฮนฮฑ ฮฑฯฮปฮฎ ฯฯ ฮฝฮฌฯฯฮทฯฮท Add ฯฮฟฯ ฯฯฮฟฯฮธฮญฯฮตฮน ฮดฯฮฟ ฮฑฯฮนฮธฮผฮฟฯฯ, ฯฯฮฑฮผฮฑฯฯฮฝฯฮฑฯ ฯฮทฮฝ ฮตฮบฯฮญฮปฮตฯฮท ฯฮต ฮดฮนฮฑฯฮฟฯฮตฯฮนฮบฮฌ ฯฮทฮผฮตฮฏฮฑ ฮณฮนฮฑ ฮฝฮฑ ฮดฮตฮฏฮพฮตฮน ฯฯฯ ฯฯ ฮผฯฮตฯฮนฯฮญฯฮฟฮฝฯฮฑฮน ฮฟฮน ฮณฮตฮฝฮฝฮฎฯฯฮนฮตฯ.
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 ฮตฮพฮฎฮณฮทฯฮท
- ฮคฮฟ ฯฯฯฯฮฟ ฮฒฮฎฮผฮฑ ฮตฮฏฮฝฮฑฮน ฮฝฮฑ ฮฟฯฮฏฯฮตฯฮต ฯฮท ฯฯ
ฮฝฮฌฯฯฮทฯฮท ฮณฮตฮฝฮฝฮฎฯฯฮนฮฑฯ. ฮฃฮทฮผฮตฮนฯฯฯฮต ฯฮฟ
*ฯฯฮฟฯฯฮญฮธฮทฮบฮต ฯฯฮฟfunctionฮปฮญฮพฮท-ฮบฮปฮตฮนฮดฮฏ. ฮ ฯฯ ฮฝฮฌฯฯฮทฯฮท ฮฟฮฝฮฟฮผฮฌฮถฮตฯฮฑฮนAddฮบฮฑฮน ฮดฮญฯฮตฯฮฑฮน ฮผฮนฮฑ ฯฮฑฯฮฌฮผฮตฯฯฮฟx. - The
yieldฮ ฮปฮญฮพฮท-ฮบฮปฮตฮนฮดฮฏ ฮตฮฏฮฝฮฑฮน ฯฯ ฮณฮบฮตฮบฯฮนฮผฮญฮฝฮท ฮณฮนฮฑ ฯฮฟฯ ฯ generators ฮบฮฑฮน ฮดฮนฮฑฮบฯฯฯฮตฮน ฯฮท ฯฯ ฮฝฮฌฯฯฮทฯฮท ฮบฮฑฯฮฌ ฯฮท ฮดฮนฮฌฯฮบฮตฮนฮฑ ฯฮทฯ ฮตฮบฯฮญฮปฮตฯฮทฯ. ฮ ฮตฮบฯฮญฮปฮตฯฮท ฯฯฮฑฮผฮฑฯฮฌ ฮตฮดฯ ฮผฮญฯฯฮนnext()ฮตฯฮนฮบฮฑฮปฮตฮฏฯฮฑฮน. - ฮคฮฟ ฮดฮตฯฯฮตฯฮฟ
yieldฯฮฑฯฮตฮน ฯฯฮฟฯฯฯฮนฮฝฮฌ ฯฮท ฯฯ ฮฝฮฌฯฯฮทฯฮท ฮบฮฑฮน ฮปฮฑฮผฮฒฮฌฮฝฮตฮน ฮผฮนฮฑ ฯฮนฮผฮฎ: ฯ,ฯฮน ฮบฮน ฮฑฮฝ ฯฮตฯฮฌฯฮตฮน ฯฯฮทฮฝ ฮฑฮบฯฮปฮฟฯ ฮธฮทnext()ฮท ฮบฮปฮฎฯฮท ฮณฮฏฮฝฮตฯฮฑฮน ฮท ฯฮนฮผฮฎ ฯฮฟฯy. - ฮบฮปฮฎฯฮท
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) ฮฯฮฏฯฯฮต ฯฮท ฯฯ ฮฝฮฌฯฯฮทฯฮท ฮตฯฮฑฮฝฮฌฮบฮปฮทฯฮทฯ ฮผฮต ฯฮฟฮฝ ฮฑฯฮฑฯฮฑฮฏฯฮทฯฮฟ ฮบฯฮดฮนฮบฯ ฯฯฮฟฮฝฮนฮบฮฎฯ ฮบฮฑฮธฯ ฯฯฮญฯฮทฯฮทฯ.
function Timedelay(ptime, callback) { setTimeout(function() { callback("Pausing for " + ptime); }, ptime); // the delay must use ptime, the parameter name }
Code ฮตฮพฮฎฮณฮทฯฮท
- ฮฮนฮฑ ฯฯ
ฮฝฮฌฯฯฮทฯฮท ฯฮฟฯ
ฮฟฮฝฮฟฮผฮฌฮถฮตฯฮฑฮน
Timedelayฮดฮทฮผฮนฮฟฯ ฯฮณฮตฮฏฯฮฑฮน ฮผฮต ฮผฮนฮฑ ฯฮฑฯฮฌฮผฮตฯฯฮฟptime, ฯฮฟ ฮฟฯฮฟฮฏฮฟ ฯฮญฯฮตฮน ฯฮฟฮฝ ฮฑฯฮนฮธฮผฯ ฯฯฮฝ ฯฮนฮปฮนฮฟฯฯฯฮฝ ฯฮฟฯ ฮดฮตฯ ฯฮตฯฮฟฮปฮญฯฯฮฟฯ ฮณฮนฮฑ ฯฮฑฯฯฮท. setTimeoutฯฮตฯฮนฮผฮญฮฝฮตฮน ฯฯฯฮฑ ฯฮนฮปฮนฮฟฯฯฮฌ ฯฮฟฯ ฮดฮตฯ ฯฮตฯฮฟฮปฮญฯฯฮฟฯ ฮบฮฑฮน ฯฯฮท ฯฯ ฮฝฮญฯฮตฮนฮฑ ฮบฮฑฮปฮตฮฏ ฯฮทฮฝ ฯฮฑฯฮตฯฯฮผฮตฮฝฮท ฮตฯฮฑฮฝฮฌฮบฮปฮทฯฮท.
โ ๏ธ ฮฮนฯฯฮธฯฯฮท: ฮฟ ฮฑฯฯฮนฮบฯฯ ฮบฯฮดฮนฮบฮฑฯ ฯฮญฯฮฑฯฮต time ฯฯ ฮดฮตฯฯฮตฯฮฟ ฮตฯฮนฯฮตฮฏฯฮทฮผฮฑ ฮณฮนฮฑ setTimeout, ฮฑฮปฮปฮฌ ฮดฮตฮฝ ฯ
ฯฮฌฯฯฮตฮน ฮผฮตฯฮฑฮฒฮปฮทฯฮฎ ฮผฮต ฯฮฝฮฟฮผฮฑ time ฯ
ฯฮฌฯฯฮตฮน โ ฮท ฯฮฑฯฮฌฮผฮตฯฯฮฟฯ ฮตฮฏฮฝฮฑฮน ptimeฮฯฯฯ ฮตฮฏฮฝฮฑฮน ฮณฯฮฑฮผฮผฮญฮฝฮฟ, ฯฮฏฯฮฝฮตฮน ReferenceError: time is not defined.
ฮฮฎฮผฮฑ 2) ฮคฯฯฮฑ, ฮตฮพฮตฯฮฌฯฯฮต ฯฮฟฮฝ ฮบฯฮดฮนฮบฮฑ ฯฮฟฯ ฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮตฮฏ ฮตฯฮฑฮฝฮฑฮบฮปฮฎฯฮตฮนฯ. ฮฮนฮฑ ฮฝฮฑ ฯฯ ฮฝฮดฮญฯฮฟฯ ฮผฮต ฮฑฮปฯ ฯฮนฮดฯฯฮฌ ฮบฮฑฮธฯ ฯฯฮตฯฮฎฯฮตฮนฯ 1000, 2000 ฮบฮฑฮน 3000 ฯฮนฮปฮนฮฟฯฯฯฮฝ ฯฮฟฯ ฮดฮตฯ ฯฮตฯฮฟฮปฮญฯฯฮฟฯ , ฮฟฮน ฮตฯฮฑฮฝฮฑฮบฮปฮฎฯฮตฮนฯ ฯฯฮปฮนฮฌฮถฮฟฯ ฮฝ ฮท ฮผฮฏฮฑ ฮผฮญฯฮฑ ฯฯฮทฮฝ ฮฌฮปฮปฮท.
Timedelay(1000, function(message) { console.log(message); Timedelay(2000, function(message) { console.log(message); Timedelay(3000, function(message) { console.log(message); }); }); });
Code ฮตฮพฮฎฮณฮทฯฮท
Timedelayฮบฮฑฮปฮตฮฏฯฮฑฮน ฯฯ ฮตฯฮฑฮฝฮฌฮบฮปฮทฯฮท ฮผฮต ฯฮนฮผฮฎ 1000.- ฮฮญฯฮฑ ฯฮต ฮฑฯ
ฯฮฎฮฝ ฯฮทฮฝ ฮตฯฮฑฮฝฮฌฮบฮปฮทฯฮท,
Timedelayฮบฮฑฮปฮตฮฏฯฮฑฮน ฮพฮฑฮฝฮฌ ฮผฮต 2000. - ฮฮญฯฮฑ ฯฮต ฮฑฯ
ฯฯ,
Timedelayฮบฮฑฮปฮตฮฏฯฮฑฮน ฮณฮนฮฑ ฯฯฮฏฯฮท ฯฮฟฯฮฌ ฮผฮต 3000.
โ ๏ธ ฮฮนฯฯฮธฯฯฮท: ฮบฮฌฮธฮต ฮตฯฮฑฮฝฮฌฮบฮปฮทฯฮท ฯฯฮฟ ฮฑฯฯฮนฮบฯ ฮบฮฑฯฮฑฮณฮตฮณฯฮฑฮผฮผฮญฮฝฮฟ msg, ฮฑฮปฮปฮฌ ฮท ฯฮฑฯฮฌฮผฮตฯฯฮฟฯ ฮฟฮฝฮฟฮผฮฌฮถฮตฯฮฑฮน messageฮฮฑฮน ฮฟฮน ฯฯฮตฮนฯ ฮณฯฮฑฮผฮผฮญฯ ฮญฯฮนฮพฮฑฮฝ ReferenceError: msg is not defined.
ฮฯฯ ฯฮฟฮฝ ฯฮฑฯฮฑฯฮฌฮฝฯ ฮบฯฮดฮนฮบฮฑ ฮผฯฮฟฯฮตฮฏฯฮต ฮฝฮฑ ฮดฮตฮฏฯฮต ฯฯฮน ฮณฮฏฮฝฮตฯฮฑฮน ฯฮปฮฟ ฮบฮฑฮน ฯฮนฮฟ ฮฑฮบฮฑฯฮฌฯฯฮฑฯฮฟ ฮผฮต ฮบฮฌฮธฮต ฮตฯฮนฯฮปฮญฮฟฮฝ ฮบฮปฮฎฯฮท โ ฮฑฯ ฯฮฎ ฮท ฮญฮฝฮธฮตฯฮท ฮตฮฏฮฝฮฑฮน ฮฑฯ ฯฯ ฯฮฟฯ ฯฮตฯฮนฮณฯฮฌฯฮตฮน ฮท ฮบฯฮปฮฑฯฮท ฯฮทฯ ฮตฯฮฑฮฝฮฌฮบฮปฮทฯฮทฯ.
ฮฮฎฮผฮฑ 3) ฮคฯฯฮฑ ฮดฮตฮฏฯฮต ฯฮทฮฝ ฮฏฮดฮนฮฑ ฯฯ ฮผฯฮตฯฮนฯฮฟฯฮฌ ฮณฯฮฑฮผฮผฮญฮฝฮท ฮผฮต ฮณฮตฮฝฮฝฮฎฯฯฮนฮตฯ. ฮ ฮฑฮบฮฟฮปฮฟฯ ฮธฮฏฮฑ ฮดฮนฮฑฮฒฮฌฮถฮตฯฮฑฮน ฯฯ ฯฯฮตฮนฯ ฮตฯฮฏฯฮตฮดฮตฯ ฮณฯฮฑฮผฮผฮญฯ ฮฑฮฝฯฮฏ ฮณฮนฮฑ ฯฯฮฏฮฑ ฮตฯฮฏฯฮตฮดฮฑ ฮญฮฝฮธฮตฯฮทฯ.
function* Messages() { console.log(yield Timedelay(1000)); console.log(yield Timedelay(2000)); console.log(yield Timedelay(3000)); }
Code ฮตฮพฮฎฮณฮทฯฮท
- ฮฮนฮฑ ฯฯ
ฮฝฮฌฯฯฮทฯฮท ฮณฮตฮฝฮฝฮฎฯฯฮนฮฑฯ ฮฟฯฮฏฮถฮตฯฮฑฮน ฮณฮนฮฑ ฮฝฮฑ ฮบฮฑฮปฮตฮฏ ฯฮทฮฝ
Timedelayฮปฮตฮนฯฮฟฯ ฯฮณฮฏฮฑ. yieldฯฯฮทฯฮนฮผฮฟฯฮฟฮนฮตฮฏฯฮฑฮน ฮผฮตTimedelayฮบฮฑฮน 1000 ฯฯ ฯฮนฮผฮฎ ฯฮฑฯฮฑฮผฮญฯฯฮฟฯ .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 ฮณฯฮฑฮผฮผฮญฮฝฮท ฮผฮญฯฮฑ ฯฯฮท ฮณฮตฮฝฮฝฮฎฯฯฮนฮฑ ฮฝฮฑ ฮผฯฮฟฯฮตฮฏ ฯฯฮฑฮณฮผฮฑฯฮนฮบฮฌ ฮฝฮฑ ฯฮฟ ฮดฮตฮน ฮบฮฑฮน ฮฝฮฑ ฯฮฟ ฯฮตฮนฯฮนฯฯฮตฮฏ.




