调用子程序时存在意外流程

BUG反馈 · 101 次浏览
白云朔 创建于 15天12小时前

通过“operation=sp&spname=子程序”方法调用子程序后,如果在子程序中关闭当前操作窗,会导致动作进入多线程。

在子程序中关闭当前自定义操作窗后,主程序不会等待子程序结束运行,会直接结束对于自定义操作窗的等待,开始向后执行。
这会导致子程序还未向主程序输出变量,主程序就已经跑完了需要子程序中变量参与的判定。

如果该流程符合“自定义操作窗”中运行子程序时的预期,希望能够在文档中添加备注(且该情况导致的多线程会在调试运行中有输出,导致调试报告混乱)。

动作链接:https://getquicker.net/Sharedaction?code=93aad7b4-a3b2-4a27-0d7d-08dd193c41bc


回复内容
CL 15天11小时前
#1

这个是正常的,主程序不会等待子程序执行完成。

如果结果不是预期的,需要在动作里避免一下主程序提前结束,比如更新完数据以后再关闭操作窗。

白云朔 回复 CL 15天11小时前 :

但是更新完数据再关闭操作窗,会导致参数被覆盖。

比如我的自定义操作窗有输出了“选择的操作项”到{选中_Data}中,如果我在子程序内向主程序的{选中_Data}进行了赋值,然后关闭自定义操作窗,此时子程序与主程序中的自定义操作窗共同结束了运行,这样虽然不会导致多线程,但是主程序的自定义操作窗因为是由子程序的自定义操作窗模块关闭的,主程序的自定义操作窗会输出一个空的“选择的操作项”到{选中_Data}中,导致子程序向主程序{选中_Data}的赋值被覆盖

白云朔 最后更新于 15天11小时前
CL 回复 白云朔 15天11小时前 :

需要从逻辑上避免这种冲突。 如果主程序输出了这个变量,就不要在子程序里去修改这个值了。 可以考虑输出到别的变量,需要的时候从里面读取。

回复主贴