在 JavaScript 中使用全局引用的函数内设置超时的奇怪行为
这是函数和全局变量:
$note_instance = Array();
$note_count = 0;
function create(text){
count = $note_count++;
time = 5000;
$note_instance[count] = $notifications.notify("create", text);
setTimeout(function(){ $note_instance[count].close() }, time);
}
该函数只是打开一个通知,设置一个超时以在 5 秒内关闭它。
因此,如果我称此
create("Good Note 1");
create("Good Note 2");
create("Good Note 3");
Ecah 音符应在其创建后 5 秒后关闭,但始终且只有最后一个音符会关闭,在本例中为“Good Note 3”。
每个注释对象在 $note_instance 全局数组中都有自己的条目,因此超时不应覆盖自身。
我在这里缺少什么?提前致谢
Here is the the function and the globals:
$note_instance = Array();
$note_count = 0;
function create(text){
count = $note_count++;
time = 5000;
$note_instance[count] = $notifications.notify("create", text);
setTimeout(function(){ $note_instance[count].close() }, time);
}
The function simply opens a notification, a sets a timeout to close it in 5 seconds.
so if i call this
create("Good Note 1");
create("Good Note 2");
create("Good Note 3");
Ecah note should close 5 seconds from their creation, however always and only the last note closes, in this case "Good Note 3".
Each note object has its own entry in the the $note_instance global array so the timeouts should no be overwriting themselves.
What am i missing here folks? Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
count
是一个全局变量。您需要通过在函数内添加
var count
将其更改为局部变量。count
is a global variable.You need to change it to a local variable by adding
var count
inside the function.