关于extjs的语句执行先后
今天,在敲代码的时候,突然遇到了一个很费解的问题。先看看我的代码。一下是JS的[code=javascript]Ext.Msg.confirm('提示','确定修改吗?'...
今天,在敲代码的时候,突然遇到了一个很费解的问题。先看看我的代码。
一下是JS的[code=javascript]Ext.Msg.confirm('提示','确定修改吗?',function(btn){
if(btn=='yes'){
submitUser(tt);
Ext.getCmp("win").show();
Ext.getCmp('win-grid').store.url='json';
Ext.getCmp('win-grid').store.load();
Ext.getCmp("userwin").destroy();
}else{
} },this);[/code]
用途是更新数据,并在更新完数据之后更新gridpanel内的信息。
但是在执行的时候,我的后台尽然[code=sql]Hibernate:
select
userss0_.USERID as USERID1_,
userss0_.USERNAME as USERNAME1_,
userss0_.USERPWD as USERPWD1_
from
DB_TEST.USERSS userss0_
Hibernate: update
DB_TEST.USERSS
set
USERNAME=?,
USERPWD=?
where
USERID=4
[/code]
先运行了查询,然后才更新。
这是怎么回事?我明明是先执行行update的。请高手赐教啊! 展开
一下是JS的[code=javascript]Ext.Msg.confirm('提示','确定修改吗?',function(btn){
if(btn=='yes'){
submitUser(tt);
Ext.getCmp("win").show();
Ext.getCmp('win-grid').store.url='json';
Ext.getCmp('win-grid').store.load();
Ext.getCmp("userwin").destroy();
}else{
} },this);[/code]
用途是更新数据,并在更新完数据之后更新gridpanel内的信息。
但是在执行的时候,我的后台尽然[code=sql]Hibernate:
select
userss0_.USERID as USERID1_,
userss0_.USERNAME as USERNAME1_,
userss0_.USERPWD as USERPWD1_
from
DB_TEST.USERSS userss0_
Hibernate: update
DB_TEST.USERSS
set
USERNAME=?,
USERPWD=?
where
USERID=4
[/code]
先运行了查询,然后才更新。
这是怎么回事?我明明是先执行行update的。请高手赐教啊! 展开
2个回答
展开全部
首先:按你的说法java后台确实是先执行了select操作然后执行update的。
原因:前端js代码是异步执行的,前端调用的循序和你最后执行sql的顺序并不完全取决于js的顺序。
例子:比如当前有这样一个js,1秒时,调用了访问后台的 update,2秒后,即3秒时调用load。
后台的java代码update函数和load函数,
update(){
//这里的代码执行了10秒
//执行update的sql语句
}
load(){
//这里的代码执行了2秒
//执行select的sql语句
}
由于后台执行代码时间的差异,实际执行sql语句的时间可能不与前端js顺序一致。
总结:这个是一个典型的js异步执行的问题。如果你想要向执行update在,再执行load的话,前端需要将load放在update的回调函数中。
原因:前端js代码是异步执行的,前端调用的循序和你最后执行sql的顺序并不完全取决于js的顺序。
例子:比如当前有这样一个js,1秒时,调用了访问后台的 update,2秒后,即3秒时调用load。
后台的java代码update函数和load函数,
update(){
//这里的代码执行了10秒
//执行update的sql语句
}
load(){
//这里的代码执行了2秒
//执行select的sql语句
}
由于后台执行代码时间的差异,实际执行sql语句的时间可能不与前端js顺序一致。
总结:这个是一个典型的js异步执行的问题。如果你想要向执行update在,再执行load的话,前端需要将load放在update的回调函数中。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询