рдХреЙрд▓рдмреИрдХ рд╕реЗ "рдиреВрдбрд▓реНрд╕" - рдЖрд╕рд╛рди рд╣реЛ

рд╣рд╛рд▓ рдХреЗ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдирд┐рд╢рд╛рди рдХреЗ рдмрд╛рдж, рд╕рд╛рде рд╣реА рд╕рд╛рде "рдореЗрд░реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдиреЗ рд╢реИрд▓реА рдирд╣реАрдВ рд▓реА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЙрд▓рдмреИрдХ рд╕реЗ рдиреВрдбрд▓ рдерд╛ред"

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

рддреЛ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ: рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреБрд╕реНрддрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирдирд╛, рдлрд┐рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдЯреИрдХ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирдирд╛, рдлрд┐рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрд╕реНрддрдХреЛрдВ рд╕реЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдпрд╣ рд╕рдм рдПрдХ рдПрдХрд▓ рдбрд╛рдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдХрдо рдХрд░рдирд╛ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ?



exports.processRequest = function (request, response) { db.query('SELECT COUNT(id) FROM books', function (res1) { // do something db.query('SELECT * FROM books LIMIT ' + Number(limit) + ' OFFSET' + Number(offset), function (res2) { // do something 2 db.query('SELECT * FROM bookData WHERE bookId IN (' + ids.join(', ') + ')', function (res3) { //     - dataset response.write(render(dataset)); }); }); }); } 


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

рдирд╣реАрдВ, рдмрд┐рд▓реНрдХреБрд▓ред рд╣рдореЗрдВ рджреВрд╕рд░реЗ рдФрд░ рдкрд╣рд▓реЗ рдХреЗ рдХреНрд▓реЛрдЬрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рддреАрд╕рд░реЗ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдХреЛрдИ рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдереЛрдбрд╝рд╛ рдХреЛрдб рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ:

 exports.processRequest = function (request, response) { var dataset = {}; getBookCount(); function getBookCount () { db.query('SELECT COUNT(id) FROM books', onBookCountReady); } function onBookCountReady (res) { // ... dataset getBooks(); } function getBooks () { db.query('SELECT * FROM books LIMIT ' + dataset.limit + ' OFFSET' + dataset.offset, onBooksReady); } function onBooksReady (res) { // ...  dataset getMetaData(); } function getMetaData () { db.query('SELECT * FROM bookData WHERE bookId IN (' + dataset.ids.join(', ') + ')', onMetaDataReady); } function onMetaDataReady (res) { // ...  dataset finish(); } function finish () { response.write(render(dataset)); } } 


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

рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреБрдЫ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ (рдХрд╣рддреЗ рд╣реИрдВ, рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рджреЛ рд╕реЗрдЯ рд╣реИрдВ), рддреЛ рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╣рд▓ рдХрд░реВрдВрдЧрд╛:

  function getMetaData () { var parallelExecutor = new ParallelExecutor({ meta1: getMetaData1, meta2: getMetaData2 }); function getMetaData1 () { db.query('smthng', onMetaData1Ready); } function getMetaData2 () { db.query('smthng', onMetaData2Ready); } function onMetaData1Ready (res) { //  dataset parallelExecutor.ready('meta1'); } function onMetaData2Ready (res) { //  dataset parallelExecutor.ready('meta2'); } parallelExecutor.start(onMetaDataReady); } function onMetaDataReady () { } 


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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓рдмреИрдХ рди рдХреЗрд╡рд▓ рдХреЛрдб рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрд░рдЪрд┐рдд рдФрд░ рдкрдардиреАрдп рдмрдирд╛рддреЗ рд╣реИрдВред

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


All Articles