setTimeout语法错误
Incorrect syntax on setTimeout
我正在尝试制作一个虚假的加载屏幕,并且我需要在加载消息之间延迟大约20-50ms左右,以便人们可以在它切换到初始化屏幕之前实际看到发生了什么。激活此功能的按钮进入以下功能:
function gameinit() {
for (k = 0; k <=1; k += 0.125) {
setTimeout(function () {
var nexttxt = "Loading... " + toString(100 * k) + "%"
}, 20);
displayupdate(nexttxt);
}
}
然而,当我使用JShint时,这是一个不正确的语法(在JSfiddle - https://jsfiddle.net/YoshiBoy13/xLn7wbg6/2/上)-特别是第4行和第5行。我已经看了这方面的指南,所有似乎都是有序的。我做错了什么?
(注:displayupdate(nexttxt)更新<带有下一行文本的标签)>
在执行脚本时,什么都没有发生—HTML上的16行文本照常上移,前8行被gameinit()函数生成的8行替换,但是gameinit()只生成空白。如果再次执行该脚本,它只输出8行112.5%(就好像这是for循环的第9次迭代一样)。
我几乎可以肯定我错过了一些基本的东西,谁能告诉我我做错了什么吗?
使用 setInterval()
代替,您可以使用 clearInterval()
function gameinit() {
displayupdate("Loading... 0%");
var k = 0;
var inter = setInterval(function() {
if (k < 1) {
k += .25;
displayupdate("Loading... " + 100 * k + "%")
} else {
clearInterval(inter);
}
}, 2000);
}
function displayupdate(d) {
console.log(d);
}
gameinit();
这里有另一个函数可以做得更好---- setInterval
var txt = '';
var time = 0;
var id = setInterval(function(){
console.log("loading..."+time/8*100+"%");
if(time++>7)
clearInterval(id);
},1000);
setTimeout
不工作,因为你会期望它在循环内工作。您必须为传递给setTimeout
的每个循环变量创建一个闭包,或者创建一个新函数来执行setTimeout
操作。
function gameinit() {
for (var k = 0; k <= 1; k += 0.125) {
doSetTimeOut(k);
}
}
function doSetTimeOut(k) {
setTimeout(function() {
var nexttxt = "Loading... " + toString(100 * k) + "%"
}, 20);
displayupdate(nexttxt);
}
相关文章:
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- jQuery AJAX Post方法错误(语法错误)
- 如何“;修复解析错误:语法错误,意外'{'in”用于php
- 错误:错误:语法错误,无法识别的表达式:
- 未捕获错误:语法错误,无法识别的表达式:ajaxsample/update_agenda(CodeIgniter)
- 未捕获错误:语法错误,无法识别表达式Jquery选择器单引号与双引号
- Javascript ( jQuery ) 错误: 语法错误: 缺少 ) 在参数列表之后
- 错误:语法错误:令牌“”,“”是意外的标记
- 未捕获的错误:语法错误,无法识别的表达式:输入:复选框[名称=ninja_forms_field_57[术语]]
- 未捕获的错误:语法错误,无法识别的表达式:“.b-brand-box”
- 未捕获的错误:语法错误,无法识别的表达式:href
- ReactJS 返回解析器错误语法错误:在 AJAX 调用 JAVA servlet 后出现意外的标记 a
- jQuery:未捕获错误:语法错误,无法识别的表达式
- j查询错误 - 语法错误:缺少:在属性 ID 之后
- 在使用 Gulp 在 javascript 中声明对象时,在 Git bash 中出现以下错误“语法错误:意外标识符”
- 获取未捕获错误:语法错误、无法识别的表达式
- 获取错误语法错误:属性列表 url 后缺少 }:http://localhost/mcportal/public/pos
- 为什么我收到错误“语法错误:非法字符”
- 未捕获错误:语法错误,无法识别的表达式