找回密码
 立即注册

QQ登录

只需一步,快速开始

Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-9-6 21:41:05
11#
本帖最后由 Simon.hu 于 2021-9-6 21:42 编辑

我没有说你的设计,我说的是业务场景比如你要做一个合同管理功能什么的?目前的逻辑是什么?为什么不能使用for循环只能使用while?
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-9-8 19:44:53
12#
Simon.hu 发表于 2021-9-6 21:41
我没有说你的设计,我说的是业务场景比如你要做一个合同管理功能什么的?目前的逻辑是什么?为什么不能使用 ...

事儿是这样的,你听我慢慢说啊


我这儿有一个大循环里套了一个小循环,小循环里在写数据,每一次大循环会跑出几千条数据来,然后小循环依次写入数据库,小循环写完了以后,大循环再跑下一次大循环。

现在我想在页面上放一个按钮,停止,点停止后,整个循环就停了,但是,一定要小循环跑完了以后才能停,而不能小循环跑了一半了停了

我的想法是,在页面上放一个按钮,当点击这个按钮时,改变一个值,然后,在循环里监听这个值,当这个值改变,就停止,但是监听运作是要写在大循环里的

我不知道我说明白了没有?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-9-9 17:55:39
13#
大佬,你的大循环在干啥小循环又在干啥?能不能说一下

大哥,我看了你的描述,您写的很认真,我也想很好的理解您的需求;
但是你每次都整这种空概念我脑瓜子嗡嗡的
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-9-9 18:27:47
14#
Simon.hu 发表于 2021-9-9 17:55
大佬,你的大循环在干啥小循环又在干啥?能不能说一下

大哥,我看了你的描述,您写的很认真,我也想很好 ...

事儿是这样的,我要向一个数据接口请求数据,数据量非常大,没办法一次请求完,于是,我请求时,就按日期来划分,每一次请求就只请求回来一天的数据,这一天的数据量大约在1300行数据到1500行数据之间。
请求回来的数据我要写到我的数据库里,所以,小循环就是跑每次请求回来的这一千多条数据所,一条一条写到我的数据库里

但是我不能每次都手工发送命令只请求一天的数据啊,我想能不能自动地一天一天地去请求,于是我在页面上放了两个日期单元格,一个是开始日期,一个是终止日期,然后在页面上放一个执行循环命令的按钮,用户手工输入开始日期和终止日期,大循环就从发送开始那天的数据,请求回来后,小循环写入数据库,然后大循环加一天,再请求一次,请求回来后小循环再写数据库。

这样干是没问题的,但是我想停止就没办法了,这又是服务端命令,关了浏览器都不行,而且强行停止写数据可能会出现停止的那一天写了一半的情况,所以,我想加一个停止按钮,当点击这个停止按钮时,外层的大循环就停止了。


外层的大循环停止,一定是内层的小循环完成了,所以不会出现写入了半天的数据的情况。

这时,我外层的大循环就要监听停止按钮了,因为是服务端命令,不是页面命令,所以我想到的就只能是大循环每次开始跑的时候,都要用条件判断一下停止按钮是不是被点击了,这就要在大循环里嵌一个条件,然后把大循环里的语句连同小循环都放到这个条件里去。

可是如果循环命令能支持条件呢?我就不用在循环里套条件语句是吧?直接就用一个条件循环就行了,在循环里嵌条件,效率肯定低呀

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-9-13 22:00:35
15#
总感觉的你这个思路有点不够机智,而且你的这个需求使用while也不好啊,这个需求跟while还是for没有直接的关联啊
我想两个比较好的方案应该是:
1.如果你这边可以操作对方的数据库的话,应该在数据同步以后,想办法把当前这个数据在对方的数据库标识一下,该条数据已经被同步;
每次请求的时候应该是将所有没有被同步的数据搞过来;
数据量的多的时候,应使用Offset-Fetch方案,而不是那日期去做,这个是标准的套路
2.实在不能修改别人的数据,你也可以使用Offset-Fetch;
如果你又不能该人家的数据库,又不想使用Offset-Fetch,那你应该这样搞:
取到所有数据中的日期最大值和最小值,然后在这个区间内循环
你使用while也解决不了你大循环的问题,即使可以自动加一,也找不到边界,停不下来啊
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-9-14 21:41:26
16#
感觉在避重就轻啊,你的两个方案说的是数据的获取,我现在的数据获取没问题,我的问题是在数据获取的循环执行过程中如何停止外层循环,而且是在不损害内层循环的前提下,我要让循环执行时一直监听页面上的一个按钮
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-9-14 21:42:34
17#
外层循环的两个日期我是通过页面上的两个lay日期获得的,问题不在这里。
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-9-15 18:28:16
18#
本帖最后由 Simon.hu 于 2021-9-15 18:38 编辑

没有啊,那你的这个不是有边界的么
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-9-15 21:08:51
19#
是呀,你想这个道理呀,服务端命令用户要怎么终止呢?用户能操作的是前端的页面,可是服务端命令拿不到前端的dom啊,于是我在页面上放一个按钮,点击这个按钮就在数据库的一个数据表的特定记录上做一个标记,然后服务端命令在循环体内部,先读一下这个数据表的特定记录的值,如果标记是继续就继续循环,如果标记是停止就终止循环
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-9-16 17:40:21
20#
那你肯定要把其实日期和结束日期传都后端,然后在后端做么?
我咋感觉咱俩还是没有互相理解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部