рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рд╕реАрд░рд┐рдпрд▓ рдХреЙрд▓

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рдШрдЯрдирд╛-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдкреНрд░рддрд┐рдорд╛рди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреА рд╣реИред рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд┐рд░ рджреВрд╕рд░рд╛, рдФрд░ рдЕрдзрд┐рдХ ... рдХрднреА-рдХрднреА рдпрд╣ рдХреЛрдб рдмрд╣реБрдд рднреНрд░рд╛рдордХ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рди рдХреЗрд╡рд▓ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдЖрджреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдЬрдЯрд┐рд▓ рдПрдирд┐рдореЗрд╢рди, рдЯрд╛рдЗрдордЖрдЙрдЯ, рдЕрдЬрд╛рдХреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдПрдХ рдХреЛ рджреВрд╕рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреАрдЫрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕реА рддрд░рд╣ред

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреА рдмреИрд╕рд╛рдЦреА рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдХреЙрд▓рдмреИрдХ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдРрд╕рд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдпреБрдкреАрдбреА
рдЫрд╡рд┐
рдиреАрдЪреЗ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬреЛ рдХрд┐ async рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рдЕрдиреНрдп рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИред рд╕рднреА рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЫреЗрдбрд╝рдЦрд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
/ рдпреВрдкреАрдбреА

рдЖрдЗрдП рдПрдХ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдЬреЛ рд╕рд┐рд░ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рдВрднрд╡ рд╣реИрдВ) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреБрдЫ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

var html = ''; request.on('response', function (response) { response.on('data', function (chunk) { html = html + chunk; }); response.on('end', function() { //-  parse(html, function(data){ //- ,     addToDatabase(data, function() { doSomething(); }) }); }); }); 


рдХрдИ рдиреЗрд╕реНрдЯреЗрдб рдХреЙрд▓рдмреИрдХ - рдХреЛрдИ рдЧреБрд▓рдЬрд╛рд░ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

 var html = ''; var responceOnEnd = function() { parse(html, parsed); } var parsed = function(data){ addToDatabase(data, addedToDatabase) } var addedToDatabase = function() { doSomething(); } request.on('response', function (response) { response.on('data', function (chunk) { html = html + chunk; }); response.on('end', responceOnEnd); }); 


рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░ рд╣реИрдВ рдЬреЛ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ:

 wait(function(runNext){ request.on('response', runNext); }).wait(function(runNext, response){ response.on('data', function (chunk) { html = html + chunk; }); response.on('end', function() { runNext(html); }); }).wait(function(runNext, html){ parse(html, runNext); }).wait(function(runNext, data){ addToDatabase(data, runNext); }).wait(function(){ doSomething(); }) 


рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ? рдФрд░ рдЖрдЧреЗ рдЪрд▓рддреЗ рд╣реИрдВред

рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред

 //first тАФ  ,   wait = function(first){ //       return new (function(){ var self = this; var callback = function(){ var args; if(self.deferred.length) { /*       */ args = [].slice.call(arguments); /*    -     */ args.unshift(callback); //      self.deferred[0].apply(self, args); //     self.deferred.shift(); } } this.deferred = []; //    this.wait = function(run){ //      this.deferred.push(run); // this      return self; } first(callback); //   }); } 


рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдб рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИрдВ, рдореБрдЭреЗ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЦреБрдж рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ :)

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрдИ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдПрдирд┐рдореЗрд╢рди рдмрдирд╛рдП:

  wait(function(runNext){ log('  '); $('#div1').animate({ top: 30 }, 1000, function(){ // -     runNext(1,2); }); }).wait(function(runNext, a, b){ //     log('  , a='+a+' b='+b ); $('#div2').animate({ top: 50 }, 1000, runNext); }).wait(function(runNext){ log('  '); setTimeout(function(){ log('  ') runNext(); }, 2000); }).wait(function(runNext){ log('  '); $('#div3').animate({ left: 50 }, 1000, runNext); }).wait(function(runNext){ log(' '); $('#div1').animate({ top: 0, left: 45 }, 1000, runNext); }).wait(function(){ log(''); }); 
JSFidle рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдПрдБ

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рддреАрдХреНрд╖рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рддрд░реНрдХ рдПрдХ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рддреБрд░рдВрдд рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХреЛрдбрдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрд╕реЗ рд░рдирдиреЗрдХреНрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХреБрдЫ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдЙрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рддрд░реНрдХ рдХреЙрд▓рдмреИрдХ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдХреА рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдХреЛ рджрд┐рдП рдЧрдП рддрд░реНрдХ рд╣реИрдВред рдФрд░ рдЗрд╕реА рддрд░рд╣ред

рджрд░рдЕрд╕рд▓, рдмрд╕ рдЗрддрдирд╛ рд╣реАред
PS рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣реЗрдмреНрд░реЛрд╕реЛрд╕рд┐рдЯреА рдЗрд╕ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд▓реЗрдЦ рдХрд╛ рдПрдХ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЪреБрдкрдЪрд╛рдк рдбреНрд░рд╛рдлреНрдЯ рдкрд░ рдЬрд╛рдПрдЧрд╛ред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд▓реЗрдЦ рдХреЛ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдкреЛрд╕реНрдЯ рдХрд╛ рдХреБрдЫ рдореВрд▓реНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдореИрдВрдиреЗ рдЗрд╕реЗ рдЫрд┐рдкрд╛рдпрд╛ рдирд╣реАрдВред

Source: https://habr.com/ru/post/In134823/


All Articles