У меня было много подобных вопросов, но никто не ответил на мою проблему. Я бы подумал, что это будет просто, но я думаю, что это не так.Нужна функция, чтобы дождаться завершения обработчика событий до выполнения следующей функции
Мне нужно вызвать функцию 20 раз, каждый из которых имеет другой набор операторов SQL. Вызываемая функция выполняет SQL-запрос, и результат обрабатывается eventHandler. Мне нужно проверить, чтобы обработчик события закончил, прежде чем выполнять следующий вызов функции.
Поскольку обработчик событий асинхронен, вызывающая функция завершается, не дожидаясь обработчика. Мне нужно, чтобы queryFunction дождался завершения запроса queryHandler, прежде чем перейти к следующей функции queryFunction. Хотя мой проект AIR, я подозреваю, что это не часть проблемы.
Надеюсь, что я был ясен, я относительно новичок в javascript.
function mainFunction(){
queryFunction (var1, var2); // There would be twenty of these with
queryFunction (var1, var2); // different values for var1 and var2
queryFunction (var1, var2);
queryFunction (var1, var2);
// etc, etc....
}
function queryFunction(){
var sqlStatment = 'SELECT Field1, Field2, Field3'+
'FROM [TableName] ' +
'WHERE Field1= var1 AND Field2= var2'; //simplified code
var stmt = new air.SQLStatement();
stmt.sqlConnection = conn;
stmt.text = sqlStatment;
stmt.addEventListener(air.SQLEvent.RESULT, queryHandler);
stmt.addEventListener(air.SQLErrorEvent.ERROR, errorHandler);
stmt.execute();
}
function queryHandler(event){
// queryHandler code
}
Благодарим за отзыв, я думаю, что понимаю решение. Являются ли аргументы буквальными в queue.push? – user2221845
Да, это так. Это массив параметров, переданных функции. –
Спасибо, это займет некоторое время, чтобы реализовать, поскольку в mainFuction есть другой код, который мне нужно будет переместить. Я дам вам знать, как это работает. – user2221845