别人请求我的接口,如果给我发的数非0,则我开始倒计时这个数,当收到这个数变成0时,结束倒计时;

举例:收到180,开始倒计时180s,接着突然收到0,倒计时立刻变为0s

1.前端定义一个计时器函数,

function timesub(){

         times--;

}

2.调用setInterval(timesub,1000);

var timer1 = setInterval(timesub,1000);

3.如果收到的值==0,结束计时器

clearInterval(timer1);

1.前端做简单,写个定时器,再按参数不同完成相应操作即可

2.后端,那就用定时任务,请求的时候开启定时任务,收到0的时候,关闭定时任务,时间直接归0

这个业务场景多线程呗,首先正常非0的数倒计时,到0s返回结果;如果中途有请求就把正在倒计时的线程关掉,返回结果。这个正常倒计时和突然结束建立线程关联即可,即结束线程要知道结束的是哪个线程。

private Object obj = new Object();

    public void rude(int i) {
        synchronized (obj) {
            if (i != 0) {
                i--;
            } else {
                // 结束。。。
            }
        }
    }

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

首先,你的需求就有问题,你的意思应该是接口长连接类型的吧,调用接口后,你的接口等待,当再次传值为0时结束

如果时这样的话,建议你加个调用成功的回掉接口 

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y