рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛: рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореИрдВ рдиреЛрдб рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЧреЗрдо рд╕рд░реНрд╡рд░ рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдирдХреЗ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ рдЕрдкрд╡рд╛рдж рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдкрд░ рдЪрд▓ рд░рд╣реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╣реИ:try { process.nextTick(function() { throw new Error('Catch Me If You Can'); }); } catch (e) { console.log('Exception caught:', e); }
рдпрд╣ рдЕрдкрд╡рд╛рдж, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрдХрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрд╣ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, рдиреЛрдб.рдЬреЗрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг 0.8.0 рдПрдХ рддрд╛рдЬрд╝рд╛ (рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ) рдбреЛрдореЗрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЙрд╕ рд╡рд░реНрдЧ рдХреЛ рд╢реНрд░рджреНрдзрд╛рдВрдЬрд▓рд┐ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЖрдЗрдП рдЬрд╛рдиреЗ:рдиреЛрдб.рдЬреЗрдПрд╕ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдордЬреЗрджрд╛рд░, рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИред рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рдЫреЛрдбрд╝рдХрд░ - рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдХреНрд╕рд░ рдмрд╛рдд рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рдПрдХ рд╕рд╛рдордВрдЬрд╕реНрдпрдкреВрд░реНрдг рддрд░реАрдХреЗ рдХреА рдХрдореА рдиреЛрдб.рдЬреЗрдПрд╕ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдХрдорд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рдиреЛрдб-рдлрд╛рдЗрдмрд░ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рдХреЗ рднреАрддрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рддреНрд░реБрдЯрд┐ рдХреЛрдб (рдЬреЛ рдиреЛрдб.рдЬреЗрдПрд╕ рдХрд░реНрдиреЗрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ) рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреЛ рдХреЛрдб рдкрд╣рд▓реЗ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рдЬрдЧрд╣ рд╣реЛрддрд╛ рд╣реИ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЙрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрдХрдбрд╝рдиреЗ / рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИред рд╕реНрдЯреИрдХ рдХреЗ рдКрдкрд░ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЖрдорддреМрд░ рдкрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдиреЛрдб рдЬреИрд╕реА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЖрдкрдХреЗ рдХреЙрд▓рдмреИрдХ рдпрд╛ EventEmitters рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдпрд╛ рддреЛ рдИрд╡реЗрдВрдЯ рд▓реВрдк рдХреЗ рдмрд╣реБрдд рдКрдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдХреЛрдб рд╕реЗ рднрд┐рдиреНрди рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╣ рд╢реНрд░реЛрддрд╛ (рд╡рд╣ рд╕реНрдерд╛рди рдЬрд╣рд╛рдБ рд╣рдо рд╢реНрд░реЛрддрд╛ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрднрд╡рддрдГ рдХреБрдЫ рдордирдорд╛рдиреЗ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рд╕реНрдерд╛рди рд╣реИ)ред рдпрджрд┐ рдЖрдк рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рджреБрд░реНрдШрдЯрдирд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдИ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ рдЬрдм рд╕рд╣реА рдХреЛрдб рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╕реА рд╕реЗ рднреА рдмрджрддрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдВ рдореИрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдпрджрд┐ рдореИрдВ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рд╡рдзрд╛рди рд╣реВрдВ рдФрд░ рд╢реВрдиреНрдп рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рд╣рд╛рдВ, рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЫрд▓рдиреА рдореЗрдВ рд╕рднреА рдЫреЗрджреЛрдВ рдХреЛ рдкреНрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рдпрд╛рд╕ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдХрдЯреЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ (рдмреНрд▓реЙрдХ) рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░, рдпрджрд┐ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдмреНрд▓реЙрдХ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХреЙрд▓рдмреИрдХ рдмрдирд╛рддреЗ рд╕рдордп рд╕рдХреНрд░рд┐рдп рдерд╛ред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╛рдзрд╛рди рдлреНрдпреВрдЪрд░реНрд╕, рдкреНрд░реЙрдорд┐рд╕, рдлрд╛рдЗрдмрд░реНрд╕ рдЖрджрд┐ рд╕реЗ рдЖрддреЗ рд╣реИрдВред рдмреНрд▓реЙрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рдеред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдирд┐рдкреЗрдЯ рдмреНрд▓реЙрдХ рд╡рд░реНрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдареАрдХ рд╡рд╣реА рдЪрд╛рд╣рд┐рдП рдЬреЛ:
function Block(errback) { this._parent=Block.current; this._errback=errback; } Block.current=null; Block.guard=function(f) { if (this.current) return this.current.guard(f); else return f; }; Block.begin=function(block, rescue) { var ec=new Block(rescue); return ec.trap(block); }; Block.errorHandler=function() {
(рдореИрдВрдиреЗ рдмреНрд▓реЙрдХ / рд░реЗрд╕реНрдХреНрдпреВ рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдЪреБрдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд░реВрдмреА рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдЬреЗрдПрд╕ рдореЗрдВ рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред
рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджрдХ: рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЗрд╕ рдлреЙрд░реНрдо рдХреЛ рд▓реЗрддрд╛ рд╣реИ: Block.begin(function() { process.nextTick(Block.guard(function() { throw new Error; })); }, function(err) { console.log('Exception caught:', err); });
рдЕрдм рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрднрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рдЫреЛрдбрд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ, EventEmitter, рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдФрд░ рдХреБрдЫ рдФрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредрдЕрдм рдЖрдЗрдП рдХреЗрдВрджреНрд░реАрдХреГрдд рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ,
рдХрдиреЗрдХреНрдЯ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдЧрд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рд╣реИ: рдпрд╣ http рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рд╣реА рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдпрджрд┐ рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реНрд╡рдпрдВ рдХреЛ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдХреЙрд▓рдмреИрдХ рдХреЛ
function(err) { ; next(err); }
рд░реВрдк рдореЗрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ
function(err) { ; next(err); }
function(err) { ; next(err); }
function(err) { ; next(err); }
ред рдЖрдк рдХреЛрд╢рд┐рд╢ / рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рджреГрд╢реНрдп рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ.рдмреЗрдЧрд┐рди рдХреЙрд▓ рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрдардиреАрдпрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
function handleUserAgent(req, res, next) { return Block.begin(process, next); function process() { jsonifyRequest(req, withRequest);
рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреА рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдХреЛрдб рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ () рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХреЗ рдЧрдП рдХрд┐рд╕реА рднреА рдЕрдкрд╡рд╛рдж рдХреЛ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдЧрд▓рд╛ рдлрд╝рдВрдХреНрд╢рди) рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреЙрд▓рдмреИрдХ рдХреЛ рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдмреНрд▓реЙрдХ.рдЧрд╛рд░реНрдб (рдУрд░рд┐рдЬрд┐рдирдлрдВрдХреНрд╢рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЖрдкрдХреЛ рдмреНрд▓реЙрдХ.рдЧрд╛рд░реНрдб () рдХреЛ рдХреЙрд▓ рдХреЗ рд╕рдордп рд╕рдХреНрд░рд┐рдп рдмреНрд▓реЙрдХ рдХреЛ рдпрд╛рдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рдУрд░рд┐рдЬрдирд▓ рдлрдВрдХреНрд╢рди () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред
рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдмреНрд▓реЙрдХ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╛рда рдХреЛ рд╕рдВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдХреЙрд▓рдмреИрдХ рдХрд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдмрдирд╛рдП рдЧрдП CouchResponse рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ)ред
request: function(options, callback) { var req=http.request(options, function(res) { var text=''; res.setEncoding('utf8'); res.on('data', function(chunk) { text+=chunk; }); res.on('end', Block.guard(function() { callback(new CouchResponse(res, text)); })); res.on('error', Block.errorHandler()); }); req.on('error', Block.errorHandler()); req.end(); }
рдЕрднреА рднреА рдХреБрдЫ рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЕрдкрд╡рд╛рдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ:
- рд╕реАрдзреЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди (рд░реЗрд╕) рдореЗрдВред
- рдХреЙрд▓рдмреИрдХ 'рдбреЗрдЯрд╛' рдореЗрдВред
рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдмреНрд▓реЙрдХ.рдЧрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рднреА рд▓рдкреЗрдЯ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ 100% рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, 'рдПрдВрдб' рд╣реИрдВрдбрд▓рд░, рдХреБрдЫ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рддреБрд░рдВрдд рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ (рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ JSON.parse рдХреЙрд▓ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЧрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддреНрд░реБрдЯрд┐ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рддреНрд░реБрдЯрд┐рд╣реИрдВрдбрд▓рд░ () рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рд╕рд░рд▓ рдХреЗрдВрджреНрд░реАрдХреГрдд рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдкреИрдЯрд░реНрди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд╣рд╛рдБ рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рддреА рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЖрдк рдиреЗрд╕реНрдЯреЗрдб рдХреЙрд▓ рдХреЛ рдмреНрд▓реЙрдХ.рдмреЗрдЧрд┐рди () (
try{try{}catch{}}catch{}
рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ
try{try{}catch{}}catch{}
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдмреНрд▓реЙрдХ рдХреЗ рднреАрддрд░ рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреБрдирд╢реНрдЪ: рд▓реЗрдЦрдХ рдХрд╛ рднрд╡рд┐рд╖реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдореИрдВрдиреЗ Future рд╕реЗ рдЬреБрдбрд╝реА рд╣рд░ рдЪреАрдЬрд╝ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛редрдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдкреВрд░рд╛ рдореВрд▓ рдкрд╛рда рдкрдврд╝реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдиреЛрдб рдкрд░ рдмреБрд▓реЗрдЯрдкреНрд░реВрдл рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП 10 рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИредрдмреНрд▓реЙрдХ рдХреНрд▓рд╛рд╕ I рдЬрд┐рд╕реЗ рдПрдХ рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдПрдХ рдПрдирдкреАрдПрдо рдореЙрдбреНрдпреВрд▓ (рдПрдирдкреАрдПрдо рдЗрдВрд╕реНрдЯреЙрд▓ рдХрдВрдЯреНрд░реЛрд▓-рдмреНрд▓реЙрдХ) рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред