Многофункциональность в Javascript (jQuery) - PullRequest
1 голос
/ 28 декабря 2010

Концепция запускает несколько функций одновременно.

Причина в том, что у меня есть страница, которая выполняет различные действия через ajax.Эти действия включают создание нескольких резервных копий новых файлов, загруженных в каталог загрузки.Но я хочу, чтобы этот процесс был инициирован модератором.

Поскольку это очень длительный процесс (может даже потребоваться несколько часов), он блокирует выполнение других запросов ajax до тех пор, пока этот процесс не завершится.

Я хочу выполнить функции вместе с ранеевыполняется функция параллельно.

Я использую Ajax JQuery для отправки инициировать запрос.

Я попытаюсь объяснить, используя пример


Я использую запрос Ajax для выполнения действий на стороне сервера,Эти запросы являются инициацией при щелчке текста привязки.

$(".ajax").live('click',function() {
     action = $(this).attr['rel'];
     $.post(
         'proccess.php',
         { action: action }, //among many action one is for the backup
         function(data) {
            //once a particular action is complete check the data to decide if it requires to continue
            flag = data.flag;
            // if the action fails or if action is backup then the flag is true
            if(flag) {
                //reexecute the same function
                $(this).trigger('click');
            }
         },'json'
     );
});

В случае, если действие == 'Резервное копирование', оно резервирует один файл за раз, а затем отвечает на сценарий с помощью json с истиннымфлаг и сообщение об успехе для уведомления о прогрессе и повторного выполнения той же функции.

Где другие действия будут включать действия по просмотру журнала резервного копирования, ошибки и другие действия, которые даже не связаны с резервным копированием.

Поэтому, как только я выберу опцию резервного копирования, чтобы начать процесс резервного копирования,Я не могу выполнить другие действия

Но я использую триггер, чтобы инициировать другой запрос, потому что если триггер нескольких функций находится в состоянии ожидания, и функция закончила резервное копирование одного файла, то перед отправкой другого вызова той же функции она выполняет выполнение ожидающей функцииfirst.


Но мне нужно лучшее решение, и для этого мне нужно многократно выполнять несколько экземпляров одной и той же функции.

Ответы [ 2 ]

3 голосов
/ 28 декабря 2010

Похоже, что это было бы лучше разработано с параллелизмом на стороне сервера. Пусть ваш ajax-запрос запустит резервное копирование и сразу же вернется (с сообщением типа «процесс резервного копирования запущен»)

Затем вы можете запрашивать сервер каждую минуту или около того, чтобы увидеть, как идет процесс. Таким образом, каждый ajax-запрос будет выполняться за миллисекунды, что освобождает клиента для выполнения всего, что вам нужно.

1 голос
/ 28 декабря 2010

Обоснованное предположение: вы используете PHP в серверной части, а ваш PHP использует сессии. Если это так, вы должны прочитать необходимые данные сеанса и позвонить на session_write_close() как можно скорее. Таким образом, файл сеанса больше не блокируется и может использоваться другими одновременными вызовами.

Обновление: Если вы говорите, что вопрос не связан с AJAX, то ответ: вы не можете.

Однако, если это строго необходимо, вы можете смоделировать функцию, воспроизводимую с помощью DOM и обработчиков событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...