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/137818/
All Articles