日期:2014-05-18  浏览次数:20356 次

有个疑难问题 关于客户下的单子 延迟5秒再判断该单子是否有效
现在有这样一个需求
  客户下了一个注单,插入到数据库中,这时候返回客户端 ,客户还能进行别的操作
 等下了这一注单5秒钟后,需要系统来判断该注单是否有效
  请问各路高手 怎样才能实现对每一注单 进行延迟判断?? 


  我觉得 这个功能实现可能需要用到异步委托

  大家谈谈自己的想法吧 看看有没有好的方案

------解决方案--------------------
AJAX中的Timer控件可轻松解决问题!!
------解决方案--------------------
要么用线程,要么用AJAX的Timer控件,还有就是JS的settimer
------解决方案--------------------
用线程不太划算,建议插数据库用存储过程,在存储过程中定义一个时间变量为output,取当前的时间getdate()出来。然后用js来时间对比
------解决方案--------------------
<input onblur="setTimeOut('checkOrder()',50000);" type=text />
<script>
function checkOrder(){
//ajax方法
var result = Ajax.send(......).responseText//这里反正就是返回单子是否有效的ajax过程,你手工写xmlhttp可以,建议用ajaxpro之类的框架。
if(result=="1"){
alert("您的订单有效");
}
else"){
alert("您的订单无效");
}
}
</script>

------解决方案--------------------
引用楼主 tc11o8 的帖子:
现在有这样一个需求
客户下了一个注单,插入到数据库中,这时候返回客户端 ,客户还能进行别的操作
等下了这一注单5秒钟后,需要系统来判断该注单是否有效
请问各路高手 怎样才能实现对每一注单 进行延迟判断??


我觉得 这个功能实现可能需要用到异步委托

大家谈谈自己的想法吧 看看有没有好的方案

------解决方案--------------------
SQL code

create proc nxx
(
    @id int output,
    @Ntime datetime output
)
as
insert into userinfo(username) values('nxx')

select @id=max(id) from userinfo
set @Ntime=dateadd(s,5,getdate())
set @Ntime = convert(varchar(19),@Ntime,120)
GO