需要函数等待事件处理程序完成后再执行下一个函数
Need function to wait until event handler has finished before executing next function
我见过许多类似的问题,但没有一个能真正回答我的问题。我原以为这很简单,但我想它不是。
我需要调用一个函数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
}
这很棘手。您确实需要某种队列(函数调用或查询参数的队列)。查询处理程序(如果需要,也可以是结果处理程序)将在队列完成后启动下一个查询。
var queue = [];
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);
go();
}
function queryFunction (){
queue.push( arguments );
}
function go() {
nextQuery();
}
function nextQuery() {
if (queue.length > 0)
{
params = queue.shift();
var sqlStatment = 'SELECT Field1, Field2, Field3'+
'FROM [TableName] ' +
'WHERE Field1= ' + params[0] + ' AND Field2= ' + params[1]; //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
// ...
// and then...
nextQuery();
}
相关文章:
- 等待回调函数执行
- 暂停函数执行流程,直到ajax请求完成
- Bigcommerce-是否可以在函数执行后更改文本
- 如何对jquery中的未命名函数执行.call()
- 等待函数执行后再继续
- mootools类型的函数将文本作为函数执行
- 停止从另一个函数执行Javascript函数
- Jquery回调函数执行多次
- 如何使即兴 jquery 暂停当前函数执行
- JavaScript 双函数执行
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 如何在 JS 中调用 2 次或更多次时延迟函数执行
- 函数执行的次数超出预期
- JS中函数执行错误
- 为什么这个函数执行了两次
- 从子函数执行父函数;t更新父级'的属性
- 如何在jQuery函数执行's处于活动状态
- 使用javascript函数执行php文件
- jQuery函数执行顺序
- javascript中同步函数执行中的问题