
17.12.2011, 00:48
|
Интересующийся
|
|
Регистрация: 13.12.2011
Сообщений: 26
|
|
Выполнить 2 разных действия при одном запросе.
Добрый вечер.
Начну сразу с абстрактного примера.....а лучше с реального
К примеру на майл.ру при просмотре списка сообщений, есть возможность отметить какие-либо сообщения и удалить их. При этом соотвественно происходит 2 действия, 1 - удаление из БД, 2 - подгрузка обновленного списка с сообщения.
как вприниципе реализовывается такой алгоритм?
Пока только одно предположение и не факт что рабочее, но в любом случае оно мне не нравится:
существует один файл обработчик запроса. В начале там происходит удаление сообщение, дальше в тексте обработчика идет запрос к БД и вывод сообщений. Получается что при вызове js-функции вначале мы удаляем сообщения и после получаем новый список из БД, рез-т выводим в одном диве.
Аналогично можно использовать и добаление данных в БД и т.д.
Вопрос такой, как правильно реализовать данный механизм?
|
|

17.12.2011, 00:59
|
 |
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Повесить один обработчик и вызвать 2 ф-ции. Если хочется красиво, расширяемо и т.д. - использовать Deferred.
|
|

17.12.2011, 01:11
|
Интересующийся
|
|
Регистрация: 13.12.2011
Сообщений: 26
|
|
trikadin, имеешь ввиду 2 ф-ции на .onreadystatechange? а напрямую можно так сделать или же заюзать одну ф-цию обертку, внутри которой вызывать уже нужные ф-ции.....если так покатит 
|
|

17.12.2011, 01:17
|
 |
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от Gesandte
|
trikadin, имеешь ввиду 2 ф-ции на .onreadystatechange?
|
Это имею в виду:
function func1(){};
function func2(){};
// всякий код...
xhr.onreadystatechange= function(){
if (this.readyState==4 && this.status==200) {
func1();
func2();
}
};
А про обёртку - я вам скинул ссылку.
|
|

17.12.2011, 01:59
|
Интересующийся
|
|
Регистрация: 13.12.2011
Сообщений: 26
|
|
trikadin, это я и подразумевал, говоря про обертку, только немного в другой записи  так и сделаю, спасибо за помощь))) а пихать лишний код пока никчему 
|
|

17.12.2011, 02:19
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
хм... а разве эти оба действия не на сервере делаются? Причем тут два действия на скрипте? Можно отправить серверу один раз две команды, удаление и получение списка. Тем самым вы одним запросом и удалите запись(и) и получите свежий список.
........А хотя по разделу в теме... видимо юзаете NodeJS... я правильно понял?
Последний раз редактировалось devote, 17.12.2011 в 02:21.
|
|

17.12.2011, 02:26
|
 |
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от devote
|
хм... а разве эти оба действия не на сервере делаются? Причем тут два действия на скрипте? Можно отправить серверу один раз две команды, удаление и получение списка. Тем самым вы одним запросом и удалите запись(и) и получите свежий список.
|
Можно отправить команду и получить и список, за один запрос. Чего лишние запросы плодить.
Сообщение от devote
|
........А хотя по разделу в теме... видимо юзаете NodeJS... я правильно понял?
|
Тема и про аякс, вообще-то. И вообще, все забивают на раздел)
|
|

17.12.2011, 02:28
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от trikadin
|
Тема и про аякс, вообще-то. И вообще, все забивают на раздел)
|
Ну это понятно что аякс, я просто подумал может он там NodeJS юзает на стороне сервера, вот и спрашивает как в JS что-то сделать... Но видимо NodeJS он не юзает, значит первый параграф моего прошлого поста остается в силе... ибо не вижу смысла двадцать запросов делать когда можно все сделать одним.
|
|

17.12.2011, 02:32
|
 |
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Ну да, логично.
|
|

17.12.2011, 12:56
|
Интересующийся
|
|
Регистрация: 13.12.2011
Сообщений: 26
|
|
дык один запрос в один обработчик пойдет.....а хочется котлеты с мухами не мешать (один файл полностью обрабатывает запросы - удаление, добавление, изменение и тд, один выводит данные), можно конечно все это инклудить в один, чтобы не смешивать......
по времени обработки, если пойдет 2 запроса если не ошибаюсь чуть больше уйдет.....но разница как мне кажется будет невелика или нет?
больше минусов не вижу пока)
|
|
|
|