$.post('request1');
$.post('request2');
то это не последовательные, а параллельные запросы.$.post('request1')
.done(function() {
$.port('request2');
});
ну или аналог на промайзах.SELECT `names`.`name`, `site1`.`price`, `site2`.`price`, ...
FROM (
SELECT DISTINCT `name` FROM `table`
) AS `names`
LEFT JOIN (
SELECT `name`, `price` FROM `table` WHERE `site` = :site1
) AS `site1` USING(`name`)
LEFT JOIN (
SELECT `name`, `price` FROM `table` WHERE `site` = :site2
) AS `site2` USING(`name`)
...
mysql> SELECT * FROM `test`;
+---------------------+
| dt |
+---------------------+
| 2016-10-09 12:05:31 |
| 2016-10-09 12:05:31 |
+---------------------+
2 rows in set (0.00 sec)
mysql> CREATE TABLE `test` (
-> `dt` DATETIME
-> );
Query OK, 0 rows affected (0.05 sec)
mysql>
mysql> INSERT INTO `test` (`dt`) VALUES ('2016-10-09T12:05:31+0000');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> INSERT INTO `test` SET `dt` = '2016-10-09T12:05:31+0300';
Query OK, 1 row affected, 1 warning (0.00 sec)
Превратить вызов в синхронный можно передав async: false в $.ajax, но это не лучший способ.
Можно в первую функцию передавать вторую, которая будет вызываться из .done.