小编Ken*_* Li的帖子

如何确保同一个 JavaScript 函数不会被单独的事件同时调用?

我有一个用 JS 和 socket.io 编写的多用户聊天网页。

许多用户可以同时发送消息,当我收到消息时,我需要运行一个更改 DIV 的innerHTML 的函数。

但是,假设有 1000 条消息同时发送,我想依次运行该函数,一次又一次。

即,在最后一次调用完成之前,不要对该函数运行另一个调用。(并且该函数内的全局变量不会被同一函数的另一个调用更改,直到当前调用完成)

例如(我使用计时器而不是socket.io事件编写了以下示例,因为它很容易理解)

下面是 JavaScript:

var gInteger = 0;
var gbolChanging = false;

function changeInteger (intChange) {
  if (!gbolChanging) {
    gbolChanging = true;
	  gInteger += intChange;
    divInteger.innerHTML = gInteger;
    gbolChanging = false;
  }
}

var timer1 = setInterval(changeInteger, 1, 1);
var timer2 = setInterval(changeInteger, 1, -1);
Run Code Online (Sandbox Code Playgroud)
<div id="divInteger">

</div>
Run Code Online (Sandbox Code Playgroud)

以上是 HTML:

上述html和js的预期结果是:

您应该只看到 0 或 1

实际结果是:

如果运行该程序足够长的时间,您也可能会看到 -1 和 2。(即两个定时器同时检测到bolChanging = false)

html javascript

5
推荐指数
1
解决办法
604
查看次数

Flutter在“运行”选项卡中禁用系统调试消息

我用?

print('Pls. show this line only');
Run Code Online (Sandbox Code Playgroud)

调试由Android Studio开发的flutter应用程序。但是,[运行选项卡]中的输出通常类似于:

Tens/Hundreds of system debug messages
I/flutter ( 9154): Pls. show this line only
Tens/Hundreds of system debug messages
Run Code Online (Sandbox Code Playgroud)

好的,有时候我要花几分钟才能找到自己的调试消息[请 仅显示此行]。

我的问题很简单,我们如何在Android Studio的Flutter Project的“运行”选项卡中禁用[数十个/数百个系统调试消息]?

同时,我正在使用:

print('***************************************************** Pls. show this line only');
Run Code Online (Sandbox Code Playgroud)

作为解决方法。

dart android-studio flutter

5
推荐指数
4
解决办法
600
查看次数

标签 统计

android-studio ×1

dart ×1

flutter ×1

html ×1

javascript ×1