рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рдиред WaitSync

рдХрд╛рд░реНрдп



рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрди рд╕рднреА рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред



рдЫреЛрдЯреА рдкрдХрдбрд╝ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рдЕрдиреБрд░реЛрдз рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдХреЙрд▓рдмреИрдХ рдХреЛ рдХрд┐рд╕ рдкрд░ рдЯрд╛рд▓рд╛ рдЬрд╛рдПред



рдЖрдк рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рдЕрдиреБрд░реЛрдз рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред



рджрд░рдЕрд╕рд▓, рдпрд╣ рдореЗрд░рд╛ рдЫреЛрдЯрд╛ рд╡рд░реНрдЧ WaitSync =) рдХрд░рддрд╛ рд╣реИред



WaitSync.js



рдкреНрд░рдпреЛрдЧ рд╕рд░рд▓ рд╣реИ:



1. рдХреЙрд▓рдмреИрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WaitSync рдкреНрд░рдХрд╛рд░ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

var vulture = new WaitSync(function () { console.debug('Start eating: ', arguments); });
      
      







2. рд╕рд░рд▓ рдХреЗ рдмрдЬрд╛рдп

  $.getJSON( 'savannah/get_prey', function (data) { console.log('... prey found: ' + data); } ); $.getJSON( 'savannah/get_other_predators', function () { console.log('... predators are done eating'); } );
      
      







.Wrap рд╡рд┐рдзрд┐ рдореЗрдВ "рд▓рдкреЗрдЯреЗрдВ" рдХрд╛рд░реНрдп

  $.getJSON( 'savannah/get_prey', vulture.wrap( function (data) { console.log('... prey found: ' + data); } ) ); $.getJSON( 'savannah/get_other_predators', vulture.wrap( function () { console.log('... predators are done eating'); } ) );
      
      







3. рд╕рднреА () рдЬреИрд╕реЗ рд╣реА рджреЛрдиреЛрдВ AJAX рдЕрдиреБрд░реЛрдз рдкреВрд░реЗ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдЧрд┐рджреНрдз рдЦрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред





рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?





рдЬрдм рдЖрдк рдПрдХ WaitSync рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВ

рд╡рд╣реА рдХреЙрд▓рдмреИрдХред



рдЬрдм рдЖрдк .wrap рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрд╕рд╕реЗ рдПрдХ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдХреЙрд▓ рдХреА рдЧрд┐рдирддреА рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдПрдХ рд╕рдВрджрд░реНрдн (рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рдЬрд┐рд╕реЗ рдЗрд╕ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рднреА рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ...



рдпрд╣реА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд░реНрдЧ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдПрдХ рдпрд╛ рджреЛ рдмрд╛рд░ рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░реЗрдВ рдЬреИрд╕реЗ рдХрд┐ :)



рдирд╛рдорд┐рдд / рд╕рдореВрд╣реАрдХреГрдд рдХрд╛рд░реНрдп



рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рднреА рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

 var monkeyBusiness = new WaitSync(function () {}); $.ajax({ url: '/cgi-bin/palm-tree', success: function (data) { console.log(' eat bananas :) '); }, error: function (data) { console.log(' eat banana peels :( '); } }); $.ajax({ url: '/cgi-bin/monkey-party', success: function (data) { console.log(' dance :) '); }, error: function (data) { console.log(' make political party :( '); } });
      
      







рдпрд╛ рддреЛ рд╕рдлрд▓рддрд╛ рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рд╣рдореЗрд╢рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЙрдарддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рджреВрд╕рд░реЗ рдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред



рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рд░реНрдп (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ) рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЫрд▓ рдкрд╛рд╕ рдХрд░реЗрдВред



 var monkeyBusiness = new WaitSync(function () { console.log('Yay! :(|) End of the day'); }); $.ajax({ url: '/cgi-bin/palm-tree', success: monkeyBusiness.wrap( 'palmTree', function (data) { console.log(' eat bananas :) '); return "banana success"; } ), error: monkeyBusiness.wrap( 'palmTree', function (data) { console.log(' eat banana peels :( '); return "banana failure"; } ) }); $.ajax({ url: '/cgi-bin/monkey-party', success: monkeyBusiness.wrap( 'monkeyParty', function (data) { console.log(' dance :) '); return "success"; } ), error: monkeyBusiness.wrap( 'monkeyParty', function (data) { console.log(' make political party :( '); return "error"; } ) });
      
      







рдЕрдм рдмрдВрджрд░ рдХреЗ рд╣рдереЗрд▓реА рд╕реЗ рдЙрддрд░рддреЗ рд╣реА рдХреЙрд▓рдмреИрдХ рдХреЛ рдЕрдВрдЬрд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдмрд╛рдХреА рд▓реЛрдЧ рдкрд╛рд░реНрдЯреА рдЦрддреНрдо рдХрд░реЗрдВрдЧреЗред



рдмреЛрдирд╕!



рджрд░рдЕрд╕рд▓ WaitSync рдХреБрдЫ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред



рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдЬрд╛рддреА рд╣реИ:

 var monkeyBusiness = new WaitSync( function (result) { console.log('Tasks were complete in the following order: ' + result.order.join(', ')); console.log('Palm tree: ' + result.data['palmTree']); console.log('Monkey party: ' + result.data['monkeyParty']); } );
      
      







рдСрд░реНрдбрд░ рд╕рдмрд░реНрд░реЗ рдореЗрдВ, рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдХрд╛рд░реНрдп рдХрд┐рдП рдЧрдП рдереЗ рд╡рд╣ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред



GroupOrder рд╕рдмрд░реНрд░реЗ рдХреЗрд╡рд▓ рдирд╛рдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ / рд╕рдореВрд╣реЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред



рдбреЗрдЯрд╛ рд╕рдмрд░реНрд░реЗ рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдирд╛рдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред



рдирд┐рд╖реНрдХрд░реНрд╖



рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд░реВрд░рдд рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╣реЛред рдиреЛрдб.рдЬреЗрдПрд╕ рдореЗрдВ, рдпрд╣ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИ ...



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣рд╛рдВ =) рдЕрдкрдиреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ!



github.com/TEHEK/waitsync



рдкреБрдирд╢реНрдЪ: рдПрдХ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВрдиреЗ рджреЛ рдмрд╛рд░ XD рдПрдкреАрдЖрдИ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛



PPS: рдореИрдВрдиреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдП рдЧрдП рдЙрд╕реА рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рд╡рд┐рд╖рдп рджреЗрдЦрд╛ ... рдзрдиреНрдпрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд░рд╛рдп рдФрд░ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП))



All Articles