рдЖрдЦрд┐рд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓

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

рд▓реЗрдХрд┐рди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреМрди рд╕рд╛ рдкрд╣рд▓реЗ рдЖрдПрдЧрд╛ рдФрд░ рдХреМрди рд╕рд╛ рдЕрдВрддрд┐рдо рд╣реЛрдЧрд╛ред рд╡реЗ рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдПрдХ рд╕реБрдВрджрд░ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред рд╡рд┐рд╖рдп рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВред

var process = processFsAndDb.after('fs', 'db'); asyncFsAccess( file, process.fs); asyncDbAccess(query, process.db);
      
      







рдЖрдорддреМрд░ рдкрд░ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдПрдХ рдХрд░рддреЗ рд╣реИрдВ:



рд╢рд╛рдпрдж рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ



рдЖрдорддреМрд░ рдкрд░, рдЬреЛ рд▓реЛрдЧ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ, рд╡реЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

 var fileData = null; asyncFsAccess( file, function (data) { fileData = data; }); asyncDbAccess(query, function (dbData) { processFsAndDb(fileData, dbData); });
      
      





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



рдЙрд╕рдХреЗ рд╕рд╛рде рдЕрдВрдЬреАрд░, рдореИрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░реВрдБрдЧрд╛



рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХрдо рд╕реЗ рдХрдо рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред рд╣рдо рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рд╣рдо рджреВрд╕рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред

 asyncFsAccess( file, function (fileData) { asyncDbAccess(query, function (dbData) { processFsAndDb(fileData, dbData); }); });
      
      





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



7 рдмрд╛рд░ рдЬрд╛рдВрдЪ



рдзреНрд╡рдЬ рдкреНрд░рдгрд╛рд▓реА рдпрд╛ рдЪрд░ рдЬрд╛рдБрдЪред рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж, рд╣рдо рдзреНрд╡рдЬ рдХреЛ рдЙрд╕рдХреЗ рдЕрдиреБрд░реВрдк рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рдпрджрд┐ рд╕рднреА рдЭрдВрдбреЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдкред

 var fileData = dbData = null; asyncFsAccess( file, function (data) { fileData = data; if (fileData && dbData) processFsAndDb(fileData, dbData); }); asyncDbAccess(query, function (data) { dbData = data; if (fileData && dbData) processFsAndDb(fileData, dbData); });
      
      





рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВред рдХреЛрдб рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЭрдВрдбреЗ рдХреЛ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдкрдХреЛ рддреАрди рдПрдХ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рддреЛ рдбреЙрдлрд┐рдЧрд╛ рдкрд╛рда рд╣реЛрдЧрд╛



7 рдмрд╛рд░ ++ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ



 var fileData = dbData = null; var process = function () { if (fileData && dbData) processFsAndDb(fileData, dbData); }; asyncFsAccess( file, function (data) { fileData = data; process(); }); asyncDbAccess(query, function (data) { dbData = data; process(); });
      
      





рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЭрдВрдбреЗ 4 рдмрд╛рд░ рджреЛрд╣рд░рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдлрд╝рд╛рдЗрд▓рдбреЗрдЯрд╛ рдЪрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЧрд┐рдиреЗрдВ)



рдореЗрд░рд╛ рд╡рд┐рдХрд▓реНрдк, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ



рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреЛрдб рд╣реИ:

 var process = function (args) { processFsAndDb(args.fs, args.db); }.after('fs', 'db'); asyncFsAccess( file, process['fs']); asyncDbAccess(query, process['db']);
      
      







рдпрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐:

 var process = processFsAndDb.after('fs', 'db'); asyncFsAccess( file, process.fs); asyncDbAccess(query, process.db);
      
      







рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╡рд┐рдзрд┐ рдХреЗ рддрд╣рдд рдЕрдореВрд░реНрдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ:

 Function.prototype.after = function () { /** * @var onReady -   -,        * @var after -   ,    . *        (process.fs  process.db) * @var ready -           , *    after    - ,   onReady */ var onReady = this, after = {}, ready = {}; var checkReady = function () { for (var i in after) if (!(i in ready)) return; onReady(ready); }; for (var i = 0, l = arguments.length; i < l; i++) { (function (key) { after[key] = function () { ready[key] = arguments; checkReady(); }; })(arguments[i]); } return after; };
      
      







рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рджреБрд░реНрд▓рдн, рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕реБрдВрджрд░ рддрд░реАрдХрд╛ рд╣реИред



All Articles