个人心得|TFlow的超时检测,delay操作

1. 同样,先抛出问题:
我们常常会有担心一个功能比较复杂的SDK会出现bug,导致程序一直卡在这个点,影响程序继续进行,我们通常需要在这种操作单独添加一个定时器,当定时器超时时,认为这个Action已经异常,需要执行异常处理。
TFlow如何解决这种问题:
在添加Action时,可以设置一个action超时参数:

RunParameters setTimeout(long timeout)// 设置超时参数public void addAction(IAction action, IActionLink subscribe, RunParameters runParameters)// 添加任务

当出现超时时,会在Action里面产生onTimeout()的回调
private TFlow.IAction action1 = new TFlow.IAction(){ @Override protected void onRun(final TFlow.IActionCB 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; } });



【个人心得|TFlow的超时检测,delay操作】

    推荐阅读