TameJS рдХреНрдпрд╛ рд╣реИ?
TameJS рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ рдЬреЛ рдЗрд╡реЗрдВрдЯ / рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдмрдирд╛рддрд╛ рд╣реИред рдиреЛрдбрдЬ рдпрд╛ рдЕрдиреНрдп v8 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдбреЗрдЯрд┐рдВрдЧ рд╕рд╛рдЗрдЯ рд╣реИ, рдФрд░ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреЗрдЬ "Buffy" рдкрд░ рдЬрд╛рдХрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЗрд╕ рддрд░рд╣ рдХреА рдпрд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдЧрдгрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдХрд┐рддрдирд╛ рд╢реМрдХреАрди рдПрдВрдЬреЗрд▓ (рд╕рд╛рдорд╛рдиреНрдп рд░реБрдЪрд┐рдпрд╛рдВ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ) рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ
- рдкрд░реА рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реА рдЬреЛрдбрд╝реА рдЦреЛрдЬреЗрдВ
- рдорд╛рд░реНрдХ рдпрд╛рддреНрд░рд╛, рдпрд╛рддреНрд░рд╛ рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рд╕рдордп
- рдмрдлреА рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдпрд╛рддреНрд░рд╛ рд╕реВрдЪрдирд╛ рднреЗрдЬреЗрдВ - рдпрджрд┐ 1) рдЖрддреНрдореАрдпрддрд╛ рд░реЗрдЯрд┐рдВрдЧ рдЕрдзрд┐рдХ рд╣реИ рдФрд░ 2) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдирд╣реАрдВ рдЧрдП
рд░реИрдЦрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
handleVisit : function(angel, buffy) { var match_score = getScore(angel, buffy); var next_match = getNextMatch(angel); var visit_info = recordVisitAndGetInfo(angel, buffy); if (match_score > 0.9 && ! visit_info.last_visit) { sendVisitorEmail(angel, buffy); } doSomeFinalThings(match_score, next_match, visit_info); }
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рдмрдирддрд╛ рд╣реИ:
handleVisit : function(angel, buffy) { getScore(angel, buffy, function(match_score) { getNextMatch(angel, function(next_match) { recordVisitAndGetInfo(angel, buffy, function(visit_info) { if (match_score > 0.9 && ! visit_info.last_visit) { sendVisitorEmail(angel, buffy); } doSomeFinalThings(match_score, next_match, visit_info); }); }); }); }
рдЕрдм рдХреЛрдб рд╕рд╣реА рд╣реИ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рдЗрд╕рдореЗрдВ рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХреЙрд▓ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ getScore, getNextMatch рдФрд░ recordVisitAndGetInfo рдХреЗ рдХреЙрд▓ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
TameJS рд╣рдорд╛рд░реА рдорджрдж рдХреИрд╕реЗ рдХрд░реЗрдЧрд╛?
рд╕реА TameJS рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
handleVisit : function(angel, buffy) { await { getScore (angel, buffy, defer(var score)); getNextMatch (angel, buffy, defer(var next)); recordVisitAndGetInfo (angel, buffy, defer(var vinfo)); } if (score > 0.9 && ! vinfo.last_visit) { sendVisitorEmail(angel, buffy); } doSomeFinalThings(score, next, vinfo); }
рдХреЛрдб рд╕реНрдкрд╖реНрдЯ, рдкрдардиреАрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ рдФрд░ getScore, getNextMatch рдФрд░ recordVisitAndGetitfo рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХрд╛рд░рдг рдкрд┐рдЫрд▓реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ!
рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЙрддрдирд╛ рд╣реА рдкрд╕рдВрдж рдХрд░рддреЗ рдереЗ?
TameJS рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
Node.JS рдореЗрдВ рд╕реНрдерд╛рдкрдирд╛ npm рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ:
npm install -g tamejs
рдФрд░ рдлрд┐рд░ рдХреЛрдб рдореЗрдВ рд╣рдо рднрд╛рд╖рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ:
require ('tamejs').register ();
рд╡рд╣ рд╕рдм рд╣реИ! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Tame рдЦреБрдж рд╣реА JS рдЬреЗрдПрд╕ рдореЗрдВ tjs рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХреИрд╕реЗ TameJS рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
TameJS рд╕рд┐рдВрдереИрдЯрд┐рдХ рд╢реБрдЧрд░ рдХреЗрд╡рд▓ рджреЛ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИ рдЬреЛ
рдкреНрд░рддреАрдХреНрд╖рд╛ рдФрд░
рд╕реНрдердЧрд┐рдд рд╣реИ var res1, res2; await { doOneThing(defer(res1)); andAnother(defer(res2)); } thenDoSomethingWith(res1, res2);
рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдмреНрд▓реЙрдХ рдХреЛрдб рдХреЗ рдПрдХ рдЦрдВрдб рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╛рд╣рд░реА рдШрдЯрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдпрд╛ рдбрд┐рд╕реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛, рдпрд╛ рдПрдХ рдЯрд╛рдЗрдорд░ред рд╡реЗрдЯ рдмреНрд▓реЙрдХ рдореЗрдВ рдХрдИ рдбрд┐рдлреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рднреА рдбрд┐рдлреЗрдХреНрдЯ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рд╡реЗрдЯ рдмреНрд▓реЙрдХ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред defer () рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдбреАрдлрд╝рд░ () рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдпреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдмреНрд▓реЙрдХ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗред
рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
TameJS рдХреЛ OkCupid рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ MIT рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЧрд┐рдЯрдм рдореЗрдВ рдПрдХ рднрдВрдбрд╛рд░ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпреБрд╡рд╛ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрдерд▓ -
tamejs.orgрд╡рд┐рдХрд▓реНрдк
рдпрджрд┐ рдЖрдк рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк
рд╕реНрддрд░реАрдХреГрдд рдЬреЗрдПрд╕ ,
рд╕реНрдЯреЗрдк рдФрд░
рд╕реЗрдХ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВред