粉丝3741获赞2.0万

再来给大家分享一遍怎么快速禁用加斯 k 吧,比如现在这个效果,他就基于 gs 实现的。我们先说麦克,首先我们打开控制台,就是我习惯用 come 的 ope 神加 i, 然后我们再控制台这个面板,按 come 的 shift 加 p, 弹出这个面板,然后我们输入 dce bo, 他就有加斯 cape 回车,打开现在鼠标移动就没有效果了,然后恢复加 creape, 也是我们用 capan 的 shift 加 p, 然后输入 aneibo, 打开就有加斯 cup 回车 他又恢复了。好,我们再说 windows, 那 windows 现在也有这个效果,大家看我习惯用 ctrl shift 加 i 打开,打开以后呢?还是在这个面板上输入 ctrl shift 加 t。

不是所有的浏览器都可以支持 javascript 代码,那我们当时有了对应的一个标签叫 noscrip 这个标签,这个标签专门去定义如果当前浏览器没办法支持 javascript 的情况下做的一些提示, 提示用户当前很多功能都要基于 jascript 来去完成,如果你没有的话,请确保升级啊什么的都可以在标签里面去编写。但是我们当前节 jascript 基本上所有的浏览器都会支持啊,所以 是没有这个不支持的问题。但是有一个问题是,我们可能在这些用户在用这个浏览器的时候可能禁止掉了 jascript 代码, 那我们可以通过这个 noscrip 去做一些提示,让他去开启 jascript, 对吧?那我们可以说一下,比如说我们可以在 noscript 这个标签里面去写掉啊,当 前啊网站需要支持 javascript, 请确保开启啊类似这样的文案给它放进去,那这个时候我们不会显示, 因为 noscript 只有在当前没有 javascript 的情况下他才会显示,那我们可以模拟一下,模拟一下,我们可以禁用一下这个 javascript 代码,在第八个这里啊,我可以去 disable 一下这个 javascript, 然后我们可以刷新一下,你会发现这个文字就显示出来了啊。

今天来讲一下阿迪尔的 gs 智能提示功能,首先我们来看一下就是 id 二,他默认就是有这个 gs 智能提示功能的, 怎么提示呢?就是输入点,然后输入关键字之后就可以选择对应的下,然后回折就可以了,看下截图,然后我们来演示一下,比如说这里定的一个数组,然后直接然后输入点,然后输入这个数组的这个方法,名字的关键字就可以匹配出来这个复习这个方法,然后直接点回车就可以了。 然后第二点提示这个 api 文档说明怎么操作,就是鼠标放上去,然后就可以看到这个 api 文档说明,我们来看一下 就是鼠标放上去,可以看到这个文档说明,然后小结一下,我们可以进到这个刚才那个方法里面去,直接 ctrl, 然后 就是点进去就可以了,可以看到一个这个文件在起作用,就这个智能提示和这个 api 文档说明,点进去之后是这个样子的, 我们来看一下,就直接 ctrl, 然后点进去,可以看到就是这个点。第一点 ts 这个后置的这个文件,这个是 gs 的这个智能提示和那个 apa app 文档说明, 就这个文件在起作用,然后他的路径是在这个 id 这个安装陌路下面的就这个文件,所以 id 他是直接就是自带的这个默认就自带的这个 gs 这个智能贴纸功能, 但是啊第二他只是自带的这个原声的这个 gs 智能提示功能,比如说刚刚才的这个速度,然后破移方法什么的,他是这个 gs 原声 gs 才会智能提示,但是没有这个接快位的这个智能提, 也就是说他没有第三方,这也是框架的智能提示功能。怎么办?怎么解决?这个需要配置一下,怎么配置呢?先扫一眼这个截图, 直接进到这个设置这里来,然后找到这个语言框架下面的 gs, 然后这个酷,这是第一步,第二步的话点这个下载,然后点下载之后, 可以看到这里就是会显示出所有的这个 gs 框架,然后我们选择这个 jk 位框架,然后点这个下载和安装就可以了,安装成功之后,安装成功成功之后就是这个样子,就这里会有一个这个 tap 这个 jkv 这个, 然后高选,然后点击下面的这个应用就可以了。删下之后是什么样子呢?我们先看一下这个操作的这个截图,就输入这个到哪点这个 pose 这个提交方法,这个是最快位的这个 api, 然后他 会智能提示了,如果我们没有安装这个接客的这个库,他是是没有这个提示的,安装之后才会有这个提示,然后这个 api 文档也是手表放上去,然后就有这个 api 文档说明的, 这个是杰克瑞的官方的这个 pose 的方法,这个路径。好,我们来演示一下怎么操作,点这里,然后点设置这里的,然后找到这个库下面,然后直接点这个下载,我这个是装好之后才有,这个一开始是没有的, 点这个下载,他这个会获取所有的这个 gs 库的这个列表,这个有点慢,要稍微等一下,然后出来之后找到这个,直接输入这个关键字接 care, 可以搜索,搜索到之后直接点这个下载安装就可以了,完了之后勾选,然后点这个应用就可以了,然后大概 就是这个样子,这个是下载和安装,安装之后我们来试一下,就直接多了 pos 的,现在就有这个智能提示了,然后直接回车就可以了,然后鼠标放上去 也会有这个 api 文档说明,然后点进去是这个样子,就是是这个,也是这个点滴点 t 也是后缀这个智能提示文件的这个规范,然后再起作用。 安装之后,然后这里才会有这个文件的不安装,他一开始是没有的,他在哪个陌路下面,是在这个外部这个库,这个陌路下面,这个是 mone 的价吧,这个是 gs 这个价吧,这个是接口尾,主要是这个文件在生效, 比如说这个是 pos 的方法,这里刚才点进来就是这里的,刚才也介绍了,就是按照之后这里就会有这个第三方框 架的,这个末路就接亏为这个末路。阿迪尔也知道了这个 html 这个智能提示功能,就是我们在敲这个 html 标签的时候,他也会智能提示,然后就可以选中对立下就可以了,就省的自己一个字母一个字母的敲 就很方便。为什么自带呢?就是我们看这里,这里就是默认就已经有了,就感觉听没有,并且已经勾选了,他自带的就是有这个智能提示功能, 然后 gs 文件里面的 gs 代码和 htm l 代码都会删下,默认默认有这个 htm 智能提示,他们就是默认就会删下了, 然后 gs 的话,就是如果是原声的 gs 的话,他也会删下,然后安装了接 k 位框架之后,然后再接 pgsp 文件里面他也会,就是揭示单码智能提示提示他也会删下。好,谢谢。

哈喽,小伙伴们好,那说到我们 gs 中的 b 包啊,有同学总是感觉很头疼,因为 b 包总是有一些引起奇异的地方,比如说 b 包他一定会有 return 吗?那 b 包一定会有内存泄漏吗?哎,现在呢评导师给小伙伴去分析一下, 其实在很多其他的语言里面也会有 b 包的存在,那到底什么是 b 包呢?来看一下官方解释。哎,这个官方解释我都不想看,因为他介绍的太灰色,难懂了,请说人话。 其实我们可以简单理解,臂包是这么一种形式,那这一段大码呀,也是我们非常常见的一段大码,一个大函数里面包含了一个变量,还有一个内部的函数,其实我们的臂包呢,是这个样子,同学们有人听他就是里层这个函数加上,哎外层函数这个变量,他们两个一起就构成了我们的臂包。 好,那到底有没有呢?我们一起来看一看,我们可以到我们的代码调试工具里面去瞧一下,然后我们只需要找到我们的 soss, 可以看到这个代码,我们发光标啊,哎,定到第十七行,打一个断 断点,重新刷新一下页面,在我们的右边呢,我们看到一个 scope, scope 呢有个可 logo, 这其实可 logo 就是 b 包的意思,我们发现确实是存在了 b 包的形式。好了,这就是一个最简单的一个 b 包的基本格式了,那我们经常喜欢呀,拿一个函数呢,把这个 b 包啊给它包起来,这样就保证我 b 包里面这个 啊变量起到一个保护性的作用。所以我讲到这,小伙伴们你来看一下,如果赞为你哎,我们的 b 包他一定有 return 吗?我们刚才的函数里面有没有 return 是没有的,那 b 包一定会有内存泄漏吗? 答案是 no 的,所以说小伙伴们要注意这两点。讲到这,小伙伴们可能非常好理解,只不过呀,对我们来说, b 包最难的地方,那就说,那我什么时候使用 retard 呢?我看到很多 b 包它都有 retard 呢,而且人家也会说 b 包会内存泄漏吗? 哎,其实啊,你要了解这个地方,那我们先明白,那我们什么情况下会在 b 包里面使用 retard 呢?来,我们一起来看一下。那刚才我们说过,我们的 b 包啊,经常喜欢拿一个大函数给他 包含起来,那这个变量给它包住了,就是一个局部变量,我们外边人是不能直接使用这个变量的,但是外部啊,如果想要使用我们这个 b 包里面的变量怎么办呢?因为你会发现这个变量是包含在函数里面的,是一个局部变量,外边人不能直接使用。 哎,那如果你想非得想要使用,那此时我们可以采取一种方法,就是用 return 的方式。哎,把我们这个纸啊给它返回出来,我就可以使用了。 所以说呢,我们必包的话,有同学会见到,会经常见到这个 return 了,测水称的主要目的啊,就是把哎,我们这个局部变量呀,返回到外面来,这样外面人也可以使用这个纸了。好了,那么我明白什么时候是 return 了,我给小伙伴举个例子,通过代码来给你们演示一下。 好,那我们呢,有这么一个需求,统计一下函数的吊用次数,你看一下,这有这么一段代码,首先呢赖的 i 等于零,也说我在外面声明了一个全局变量,写了一个小函数,函数里面呢,爱加加,哦,我函数掉用一次了,就加加,然后说出我被掉用多少次, 那这样没有使用背包的形式,哎,那爱呢,也是个全局变量,所以说呢,我可以这么写,写上 fn, 加上一个小括号,就掉用一次,哎,按下会车被掉用了一次,然后呢我再 fn, 再按一下会车,哎,这样呢,掉用两次,这个看上去是非常好的,但是呢会有问题,因为 i 是个全局变量,那如果此时呢,我给 i 做了一个修改,比如说,哎,等于了一千,好, 然后呢,现在呢,我再进行调用 fn 的话,你说他会变成多少? s 十会变成一千零一次, 因为呢,这时候呢就会出了一个问题了,因为我爱是与全局变量,那所以说呢,我在外面修改的话,有影响我们统计的次数了,那此时我应该怎么办呢?哎,我们可以采取第二种形式,是 b 包的形式,因为 b 包里面最典型的一个应用就是可以实现我们 数据的私有啊,让我们变量做一个私有化好了。那同样道理,还首先呢有一个函数,然后呢我们想使用这个 i am, 所以说我 return 的一下, 把这个想要的这个数据啊给他返回出来了,那现在呢,我们通过 fn 调用过来,那此时呢,我如果保存一下,我们重新刷新页面看一下,那现在呢,还是统计我这个函数调用次数上,那我再输入的是 fun, 加上一个小括号,敲一下回车是调用了一次,我在 fun 加小回车,哎,跳用了两次,这个没问题, 那此时呢?我如果修个 i 等于一千,会有影响吗?哎,他结果就不会影响了,你看 fun 再加个小符号敲回车走着是不是被吊用了三次, 他不会有影响,因为我们这个爱呢,是一个私有变量,也说在函数里面包着的,我们在外面是无法修改的,所以 说我们会发现 b 包它有一个非常非常显著的作用或者特点,叫做实现了数据的私有。第一,哎,我外面人啊,可以使用我这个爱,这个变量是没问题的,你能用,但是外面呢,是没有办法去做修改的,因为这个数据是我私有的,所以说这就解决了我们 b 包的 一个主要作用或者主要应用,可以实现数据的私有。如果你按照以前的写法呀,这个炕的这个选举变量很容易被修改,而如果你使用我们背包的形式的话,实现数据的私有,因为外面的人呢,可以用,但是无法直接修改,是不就是私有的了? 其实 b 包啊,在我们开发中也非常常见,比如说我们开发中用的节流和方斗里面就有这种 b 包形式,再比如说我们 vo 三里面,或者更不用去 react 了, rex 后色里面大部分用的都是这种 b 包的形式。 好了,那讲完这个之后呢,很多小伙伴会关心的,那闭包会引起内存泄漏是怎么引起的呢?来我给小伙伴讲解一下关于这个闭包引起可能引起内存泄漏的问题了。 那在这里面我们可以借助垃圾回收机这里面的标记清除法可以来看出,比如说还是这段代码,我给小伙伴们分析一下,那我们可以看到代码方块式呢,是不执行的,我们先看 cost resalt 好了,那 resilt 一看,指导是一个全局的变量,那全局变量,哎,我们代码执行完是不销毁的,除非你关 页面受销毁。那么我们利用我们的啊,标记清除法呀,就知道是能够我们这个温度啊,是能找到他的好,找到他之后呢,我们会发现他呢啊,又引用了 fn 这个函数,好,那 fn 函数是不是上面的函数了,所以我要执行这个函数。 fn 这个函数里面是不是发现了一个 return, 那 return 呢?也说 fn 的函数呢,是能找到 fun 这个函数的,喏,是能找到他的,好,那我们继续根据标记往里面去找。那 fun 里面是不是又用到了我们的 count, 发现 f u n 呢,又能引用这个 ct, 所以说呢,既然我能找到 ct, 我就不会会受垃圾,所以说呢,它是一直存在着的,所以啊,啊,正常情况下,一般的局部变量,那函数执行完了就销毁,而我们这个呢,因为 cons 的瑞萨他一直没销毁啊,所以说这个 conta 呢,也不会销毁,所以这就引起了我们 conta 这个变量的一个啊,内存泄漏了,好,这个小伙伴明白了吗?好,那只不过呢,不是所有人的 都要手动回收的,也没有必要说我为了专门办哪一个变量了,做一个销毁也没有必要啊,比如说在我们 reax 里面,很多的 b 包啊,是不能来进入回收和销毁的,所以说啊,也没有必要啊,遇到了一个内存泄漏就要去销毁,哎, b 包就是一个 里层函数加上一个变量一起构成了我们的背包,那背包啊,他不一定会内存泄露,背包啊,不一定会到 return。 但是呢,如果有一种情况啊,那我们想使用这个背包里面这个变量,因为他是个局部变量,外边人呢,不能直接使用, 那这个时候呢,我们可以通过 retard 的形式把它返回出来,这样我外边的人呢就能使用我这个变量了,这就是构成了我们必包的典型应用变量的私有,因为外边的人呢,能使用这个变量,但是外边的人 无法直接修改这个变量,因为这个变量是属于内部变量的。好,这个小伙伴们明白了吗?当然最后一点呢,我们必爆呢,可能会引起这种内存泄漏,哎,只不过我们不是所有内存泄漏都需要回收的。

前段开发小技巧,使用 wake lock 阻止屏幕熄屏,需要保持屏幕长亮的时候,使用 navigator 点 wake lock, 点 request screen 来请求锁会返回一个 wake lock sentinel 对 象,调用它的 release 方法可以释放锁。 wakelock sentinel 对 象里面还有一个 release 事件,可以监听锁的释放。另外要注意的是,切换标签页最小化等操作也会导致锁被释放,如果切换回去也要继续保持常量的话,需要做一些额外的处理。

前端开发小技巧,三种方法手动取消一个 promise。 方法一,扭一个 promise, 在 这个 promise 的 执行函数中插入一个取消函数 cancel, 需要取消的时候调用 promise 点 cancel 即可。这个方法优点是实现简单,缺点就是不能对已有的 promise 任务做处理, 要在外面再拗一个 promise。 方法二,使用 promise 点 race 函数, race 是 竞赛的意思,如同其字面意思,这个函数传入多个 promise, 只要有其中一个完成了,那就不会再返回其他 promise 的 状态了。如第一个方法一样,创建一个可取消的 promise, 调用 cancel 方法时,让这个 promise 结束就行了。这个方法优点是不会对已有的 promise 任务做改动,缺点就是需要创建一个额外的 promise。 方法三,使用 abort controller, 这里面有个 signal 属性,监听 signal 的 abort 事件来取消 promise, 需要取消的时候调用 abort controller 的 abort 方法。这个方法的优点是不需要在 promise 里插入一个取消函数,但是需要监听 signal 的 abort 事件。 缺点是需要额外使用 abort controller。 abort controller 本来是用来中断一个网络请求的,在这里使用不如前面两种方法优雅。我个人觉得最好的方法就是拔电源,能够彻底中断 promise, 你 觉得呢?

呃,看一下那段代码是吧,有个隐患,然后昨天我写了,但是忘看了。 plc 这个是吧。我的妈呀,这是干啥呀?这是 h 元素 gs, 只需要看 gs 吧,不需要看其他的吧,这是干啥呀这是。定了一个函数,但是没调这个函数,这是要干啥呀这是? 呃。一个任务列表,一个配置,配置里面有三个属性,一个是是否批处理,最大并发症是否立即中断抛出。这啥意思啊?这。 我这个地方不是很理解啊。看大了吧,好像是一个任务处理是吧?一个异步的任务处理,传入一个任务列表,这里边应该是一个函数的,对一个函数的数值,然后这里边应该告诉他怎么来处理,是吧?批处理最大并发症 是否离这个地方我不是很理解哦,一个任务出现异常的时候是不是马上要停止,是吧?是不要停止其他任务我大概理解了啊。判断一下这个是不是数组,不是数组的话认错长度为零的话不处理啊,没问题。 判断一下这个是啥代码?写的还挺好的哈。格式还挺好的,挺舒服的。这是哪哥们写的代码啊,格式看着挺舒服的啊。你看这就是首位代码,先把有问题的地方先扔出去,后边就进行正常逻辑的判断,这写的挺好啊,呃。得到一个,呃,就找到那些不是方格形的是吧?不是方格形的。 如果说这里边有一些任务,它不是一个函数,它都不是函数了,不是函数就抛异常。这写挺好啊。写挺好啊。得到这些配置啊。 concur 啊,这是递发数,这是是否批处理,这个是是不是错不过去中断啊,还是在做这个首位代码。它不是整数或者是它小于 一,那是不能出现这种情况的是吧。报错没问题啊,挺好。这是拿结果的是吧。这个应该放的是啥?放的是正在运行的任务是吧。哎。为什么他直接给我框选了为什么直接给我框选了?哎。为啥直接给我框选了? 把他,哎。 to reverse。 这啥意思啊?倒着倒着是啥意思呢?我们没太明白啊。为啥倒一下往后看吧。这是个中断信号啊。一个中断信号,然后看一下这个有没有任务,如果说有任务的话干嘛呢? 写了两个外循环,第一个外循环,他说这个正在运行的,呃。就是现在还没有达到并发症是吧。他这一块还没有达到并发症,并且他还有任务,那么就干嘛呢? tasks length 减去这个得到一个任务下标。 你下标为啥要这种方式来得到啊?你这个绕一下要把脑壳绕晕呢。你为啥绕我这一下呢?看上我年纪大了,一定要绕我一下吗?这个长度减这个长度是啥意思呀? 妈呀,你真的是非要来绕我干啥玩意。反正就拿一个任务下标吧。我懂你这个意思啊。这个输出会越来越少越来越少是吧。按你这个逻辑应该是这个任务会越来越少,那么现在越来越往后去非要绕我一下串。呃。弹一个任务出来,这个 proms 串又在干啥?我都忘了 这是在干啥。新的一篇是吧。 takes callback of any kind 啊。把这个函数的返回结果包成一个同步的去运行这个函数,用这个参数传进来啊啊,明白了啊, 好,就是运行这个函数啊,把这个函数的返回结果包装成一个 promise, 是 吧?这是给他传的参数,给这个函数的参数传一个当前的任务的下标,传一个信号,把信号给他干啥呀?给他信号干啥?得到一个 promise, promise all settled, 把当前的任务。嗯? index 是 啥?我这句话就没太看懂了,你传个 index 干啥呀? 嗯,我这个是没太明白啊,他又不是 promise, 你 传他干啥呀?你传这个我没太懂啊,传这个没有意义啊, 你传这个的话,就相当于是你写了个啥?写了一个,我这个改不了啊,就相当于是你写了一个 promise result, 一个数字,那传这个玩意有啥意义啊? 我这一块没太看懂。相当于你这个 promise 跟他的情况不一样吗?你这个 promise 跟他上面的 current 不 一样吗?有啥区别呢?没啥区别啊,他完成他才能完成,他失败他就失败,没啥区别啊。好,你把这个玩意加进去。嗯啊,加进去吧。好,这样当前的 promise 翻了,你 就把这个东西删除啊,那么这个循环呢?他就可以保证至少他的病发数一下就达到最大病发了,是吧?就可以达到最大病发,是这意思吧?那看下边的这又是个啥玩意?前面的一下达到最大病发数量, 然后下边如果说正在运行的有任务,那这一块肯定就有任务了,在最开始 race running 啊, 你看谁先完成是吧?你看一下这些 promise, 谁先完成谁先完事。 race 他 返回的是一个宿主吗?我这些 a p i 又忘了,真的要了老命了。 promise race, 他 返回的是宿主吗? 哎,你怎么能假设他得到的是个宿主呢啊,无所谓吧,可能对这个任务有要求嘛。对这个任务的函数格式有要求?估计是啊,无所谓吧。嗯,如果说,哎,这是 race 的 功能吗? 你以为是他返回的是个数组吗?他返回的也不是个数组啊。那你对那个任务的个函数格式有要求是吧?看上去有点像一个通用函数。通用函数的话也不能应该对这个函数格式有要求啊。你怎么能去对函数格式有要求呢?你这一块他就不通用了呀,这个函数。反正这个函数不通用了啊。我跟你说清楚啊, 他没有通用性了啊,他有限制。嗯,那就看他状态对吧。嗯,如果说状态是 rejected 的, 并且呢信号叫中断。我靠, 你这个中断逻辑的这里都没有写啊。中断逻辑你写了吗?你没有写中断逻辑啊,这里你哪有中断逻辑啊,你倒是把中断了。你中断逻辑在哪啊?没看到啊。 in 这个是哪来的呀?哦,在这。我靠,有好任务传出来的哇,你这个函数完全没有通用性啊,哥们,完全没通用性啊,你咋把代码写成这个样子了? 代码咋写成这个鬼样子了?前面还写的挺好,你后面这段代码逻辑怎么写成这样子了?这里面有 bug 呀,我看一下 bug 在 哪啊?你这里有 bug 呀,比方说吧,按照你这个逻辑的话,比方说一开始一共三个任务正在并发,对吧?然后现在运行到这个代码 race 好。 呃, 这不对啊,你这个还不是这个问题哦,还不光是这个问题哦,你不死循环了吗?哥们, 你都还没有到那一步。哥们你都死循环了,我看看。在这里用了一个异步哦,你幸好这里还有个异步 哦。哦哦,倒不会死循环。不会死循环,你这里有异步哦,你是卡这个循环里面不出来,在这个循环里边不绕出来,然后在这里去睿思,你非得把所有东西全部弄完,那你这个如果说这样写的话,逻辑又不对了呀。你这里的逻辑是啥? 那你就是必须要等这三个任务全部处理完了过后,你才能去加剩下的三个任务啊?妈呀,这个代码怎么写成这个样子的? 哦,你是这里加了批处理是吧?你的批处理的意思是不是就是说就是你病发的任务要全部处理完了过后才能进行下一次病发?你是不是这个意思? 那这样子的话也会有问题的。那比方说我们现在就不考虑批处理啊,就不是批处理,不是批处理的话,这个代码就没有是吧?是不是这个代码就没有就应该删掉?我就不考虑批处理啊,那不考虑批处理的话,又有别的问题了?不是批处理,那不是批处理的话,是不是一个瑞士就结束了,对不对? 如果说不是批处理的话,那么是不是第一次循环就结束了?谁的代码?谁的代码上麦呀?你上麦呀。嗯?这个代码这个咋写成这样了?前面倒写的挺好啊,如果说不是你上麦上麦,再说 四十一,四十二,四十五,我看啥呀?我知道啊,他如果说不是批处理的话,那么就是说一个任务完了过后,你就处理掉了吗?对吧?加到结果里面去了吗?那么现在剩下两个任务还在列表里边,对吧?还在个 set 里边,那么接下来就要进入到下一次循环了,你下一次循环的时候,你这一块你发现了 一个啥问题,又加了一个任务进去,这里有这么一个隐患啊,这个隐患藏的比较深,他就有这么一个隐患。看好了啊,这是你这个设置集合,现在的情况是这样的,有两个任务都完成了, 不考虑那种极端情况,我就考虑一个,一个任务完成了,是不是要进行后续处理?什么叫后续处理?就这一坨代码要进行处理,对吧?那么在处理的期间,另一个任务也完成了,就在处理这个同步代码的期间,另一个任务也完成了。现在。 那么你现在在处理另一个任务吗?没有,你在处理当前这个任务,你把当前的任务加到结果里边去。好,那么这个微队列完成了,但是另一个任务也完成了,那么另一个任务的什么东西会进微队列?就这个东西会进微队列, 比如说另一个任务呢?他就可能会从这个列表里边被删掉了。然后呢?你现在进行下一次循环的时候,你会发现你少了个任务,这个任务没有处理就被删掉了,因为你下次循环再到这个地方的时候,你会出现一个任务少了的情况,你到哪会有这种问题啊?