Вам нужно, чтобы вызовы были объединены в одну транзакцию. Обычно вы делаете это с аннотацией Spring AOP + @Transactional
в приложении. Вы также можете сделать это программно с помощью PlatformTranactionManager
, TransactionTemplate
и обернуть код для выполнения в TransactionCallback
. См. документацию по транзакции .
Не использовать анонимные функции. Дайте им имена. Я не знаю, можете ли вы сделать то, что я написал ниже:
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);
Form1
из кода. Form1
. NotifyIcon
, чтобы создать значок на панели задач (назначить ему значок). NotifyIcon
и проведите различие между правым и левым щелчком, установив контекстное меню и показывая его, для какой кнопки (правая / левая) была нажата. Application.Run ()
, чтобы приложение продолжало работать с Application.Exit ()
для выхода. Или bool bRunning = true; while (bRunning) {Application.DoEvents (); Thread.Sleep (10);}
. Затем установите bRunning = false;
, чтобы выйти из приложения. Возможно, вы можете написать функцию-оболочку на стороне сервера. Таким образом, ваш javascript выполняет только один асинхронный вызов вашего собственного веб-сервера. Затем ваш веб-сервер использует curl (или urllib и т. Д.) Для взаимодействия с удаленным API.
Я использую метод грабли (поддерживается heroku )
с файлом lib / tasks / cron.rake ..
task :cron => :environment do
puts "Pulling new requests..."
EdiListener.process_new_messages
puts "done."
end
Выполнить из командной строки это просто "rake cron". Затем эту команду можно при желании поместить в cron / планировщик задач операционной системы.
Обновление это довольно старый вопрос и ответ! Немного новой информации:
Я считаю, что реализация конечного автомата сделает код более читаемым:
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) {
}
}
Прочтите этот раздел часто задаваемых вопросов на сайте jQuery. Особенно ссылка на обратный вызов и полный метод.
Вы хотите, чтобы данные из A передавались в B, а данные из B передаются в C. Так что вы должны выполнить обратный вызов по завершении.
Я не пробовал это, хотя .