TFlow的超时检测,delay操作

1. 同样,先抛出问题:

我们常常会有担心一个功能比较复杂的SDK会出现bug,导致程序一直卡在这个点,影响程序继续进行,我们通常需要在这种操作单独添加一个定时器,当定时器超时时,认为这个Action已经异常,需要执行异常处理。

TFlow如何解决这种问题:

在添加Action时,可以设置一个action超时参数:

RunParameters setTimeout(long timeout)  // 设置超时参数

public <I, O> void addAction(IAction<I, O> action, IActionLink<O> subscribe, RunParameters runParameters)  // 添加任务

当出现超时时,会在Action里面产生onTimeout()的回调

private TFlow.IAction action1 = new TFlow.IAction<Integer, String>(){
        @Override
        protected void onRun(final TFlow.IActionCB<String> cb) {
            new Thread(){
                @Override
                public void run() {
                    super.run();

                    System.out.println("action 1");

                    cb.finish("data from action 1");
                }
            }.start();
        }

        @Override
        protected void onTimeout() {

        }

        @Override
        public void cancel() {
            System.out.println("action1 cancel");
        }

        @Override
        public String toString() {
            return "action1";
        }
    };

2. 同样,抛出第二个问题:

我们经常需要在执行完某个操作时,等待几秒钟,再执行下一个操作。比如等待5秒,自动执行页面跳转操作。

通常,我们也是设置一个定时器来处理这种事,但是最终代码都是比较恶心。

TFlow如何解决:

RunParameters setRunDelay(long runDelay)

在参数里面添加delay参数就行了。

 

RunParameters参数是可以动态更新,比如如下逻辑,如果登录失败,就延迟10秒再次登录。
tFlow.addAction(logonAction, o -> {
            if(o){
                return getStoreIDAction;
            }else{
                logonAction.setRunParameters(logonAction.getRunParameters().setRunDelay(10000));  // 延迟10秒执行
                return logonAction;
            }
        });

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值