Как объединить запросы ajax в цепочку?

Вам нужно, чтобы вызовы были объединены в одну транзакцию. Обычно вы делаете это с аннотацией Spring AOP + @Transactional в приложении. Вы также можете сделать это программно с помощью PlatformTranactionManager, TransactionTemplate и обернуть код для выполнения в TransactionCallback. См. документацию по транзакции .

29
задан defnull 15 June 2009 в 11:05
поделиться

6 ответов

Не использовать анонимные функции. Дайте им имена. Я не знаю, можете ли вы сделать то, что я написал ниже:

var step_3 = function() {
    c.finish();
};

var step_2 = function(c, b) {
    ajax(c(b.somedata), step_3);
};

var step_1 = function(b, a) {
  ajax(b(a.somedata), step_2);
};

ajax(a, step_1);
16
ответ дан 28 November 2019 в 01:27
поделиться
  1. Создайте новое приложение Windows с помощью мастера.
  2. Удалите Form1 из кода.
  3. Удалите код в Program.cs, запуская Form1 .
  4. Используйте класс NotifyIcon , чтобы создать значок на панели задач (назначить ему значок).
  5. ] Добавьте к нему контекстное меню.
  6. Или отреагируйте на щелчок мышью NotifyIcon и проведите различие между правым и левым щелчком, установив контекстное меню и показывая его, для какой кнопки (правая / левая) была нажата.
  7. Application.Run () , чтобы приложение продолжало работать с Application.Exit () для выхода. Или bool bRunning = true; while (bRunning) {Application.DoEvents (); Thread.Sleep (10);} . Затем установите bRunning = false; , чтобы выйти из приложения.
5
ответ дан 28 November 2019 в 01:27
поделиться

Возможно, вы можете написать функцию-оболочку на стороне сервера. Таким образом, ваш javascript выполняет только один асинхронный вызов вашего собственного веб-сервера. Затем ваш веб-сервер использует curl (или urllib и т. Д.) Для взаимодействия с удаленным API.

4
ответ дан 28 November 2019 в 01:27
поделиться

Я использую метод грабли (поддерживается heroku )

с файлом lib / tasks / cron.rake ..

task :cron => :environment do
  puts "Pulling new requests..."
  EdiListener.process_new_messages
  puts "done."
end

Выполнить из командной строки это просто "rake cron". Затем эту команду можно при желании поместить в cron / планировщик задач операционной системы.

Обновление это довольно старый вопрос и ответ! Немного новой информации:

  • служба heroku cron, на которую я ссылался, с тех пор заменена на Heroku Scheduler
  • для частых задач (особенно.
23
ответ дан 28 November 2019 в 01:27
поделиться

Я считаю, что реализация конечного автомата сделает код более читаемым:

var state = -1;
var error = false;

$.ajax({success: function() { 
                  state = 0;
                  stateMachine(); },
        error: function() {
                  error = true;
                  stateMachine();
        }});

function stateMachine() {
  if (error) {
     // Error handling
     return;
  }

  if (state == 0) {
    state = 1;
    // Call stateMachine again in an ajax callback
  }
  else if (state == 1) {

  }
}
2
ответ дан 28 November 2019 в 01:27
поделиться

Прочтите этот раздел часто задаваемых вопросов на сайте jQuery. Особенно ссылка на обратный вызов и полный метод.

Вы хотите, чтобы данные из A передавались в B, а данные из B передаются в C. Так что вы должны выполнить обратный вызов по завершении.

Я не пробовал это, хотя .

2
ответ дан 28 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: