Выше очень правильно заметили, что нужно разбивать методы на логические части поменьше, а не писать простыней, но еще есть проблема в том, что нужно сделать несколько запросов в БД или другим внешним источникам, к файлам, другим серверам, и потом на основе всех фрагментов данных, полученных асинхронно, исполнить бизнес-логику и сформировать ответ. Асинк прекрасно с этим справляется, как в примере ниже.
var dataRequests = [];
// массив запросов к разным данным (БД, файлы, сетевые вызовы)
var dataResults = {};
// я предпочитаю не использовать массив results, который дает async
// а вместо этого делать именованные фрагменты данных
// и писать их в свой хеш
// добавляем один запрос к данным
dataRequests.push(function(callback) {
db.queryRow(
'SELECT * FROM TableName1 where Field1=?', [someValue1],
function(err, res) {
dataResults.firstPiceName = res;
callback(err, null);
}
);
});
// добавляем второй запрос к данным
dataRequests.push(function(callback) {
db.queryValue(
'SELECT count(*) FROM TableName2 where Field2=?',
[someValue2],
function(err, res) {
dataResults.secondPiceName = res;
callback(err, null);
}
);
});
// вызываем массив запросов асинхронно
async.series(dataRequests, function(err, results) {
// тут делаем бизнес-логику над dataResults в котором у нас есть
// все фрагменты данных .firstPiceName и .secondPiceName
// и формируем общий результат
});
А еще рекомендую ставить тег "node.js" на вопросы по ноде.
var files = [];
.bind("file-upload-added", function() {
var file;
if (files.length) {
file = files.pop();
} else {
return;
}
$.ajax({
...
...
...
success: function() {
.trigger('file-upload-added');
}
})
});
.bind("file-upload-selected", function(file) {
files.push(file);
.trigger('file-upload-added');
})
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/image\/.*$
RewriteRule ^.*$ imageWrapper.php [NC,L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
mysql> SELECT * from ticket WHERE user_id = 0 ORDER BY sort LIMIT 10;
+--------+------+---------+
| id | sort | user_id |
+--------+------+---------+
| 923164 | 1 | 0 |
| 171274 | 2 | 0 |
| 217458 | 3 | 0 |
| 182627 | 4 | 0 |
| 183120 | 5 | 0 |
| 483756 | 6 | 0 |
| 210156 | 7 | 0 |
| 362920 | 8 | 0 |
| 311591 | 9 | 0 |
| 545096 | 10 | 0 |
+--------+------+---------+
10 rows in set (0.00 sec)
mysql> UPDATE ticket SET user_id = 1 WHERE id IN (923164, 171274, 217458);
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> SELECT * from ticket WHERE user_id = 0 ORDER BY sort LIMIT 10;
+--------+------+---------+
| id | sort | user_id |
+--------+------+---------+
| 182627 | 4 | 0 |
| 183120 | 5 | 0 |
| 483756 | 6 | 0 |
| 210156 | 7 | 0 |
| 362920 | 8 | 0 |
| 311591 | 9 | 0 |
| 545096 | 10 | 0 |
| 230442 | 11 | 0 |
| 472816 | 12 | 0 |
| 138187 | 13 | 0 |
+--------+------+---------+
10 rows in set (0.00 sec)
как от этого избавиться?Я не думаю, что от этого стоит (или даже можно) избавляться. Вреда никакого, одна сплошная польза :)