golang 异步执行延时代码

今天写一个功能的时候,遇到了一个情况就是用户拉起支付宝准备支付的时候,可能会点击X退出 支付,但是项目里面不允许这样的操作,于是hu6xaingd想到一个办法就是20秒之内没有完成支付的话,就释放改订单,给其他人支付,使用goroutine异步执行一个20秒的函数,然后给安卓返回数据,防止等死。以下是代码:


go func(orderid int64) {
        nt := 20
         for i := 0; i < nt; i++ {
            time.Sleep(time.Second * 1)
        }
        q, _ := common.NewOrm().QueryTable( "anchor_order").Filter( "id", orderid).Filter( "status", 1).Count()
         if q > 0 {
             //还原
             if _, err := common.NewOrm().QueryTable( "anchor_order").Filter( "id", orderid).Update(orm.Params{
                 "anchorid": 0,
                 "mph": 0,
                 "total": 0,
                 "status": 0,
            }); err != nil {
                fmt.Println( "还原AOT出错")
            }
        }
        fmt.Println( "FUCK---执行结束")
    }(orderid)

猜你喜欢

转载自blog.csdn.net/nimei31/article/details/78989147
今日推荐