Javascript 设置超时和键入效果
我目前遇到了这个问题,我想在这个示例中缓慢地显示一个单词,我想显示“你好,我的名字是…”,但它应该这样记录: “H”然后500毫秒后Javascript 设置超时和键入效果,javascript,settimeout,Javascript,Settimeout,我目前遇到了这个问题,我想在这个示例中缓慢地显示一个单词,我想显示“你好,我的名字是…”,但它应该这样记录: “H”然后500毫秒后 “他”然后500毫秒后 “Hel”然后… “地狱”等等 但所有人都立即表示感谢,感谢您抽出时间 函数类型(字符串、长度){ if(长度
“他”然后500毫秒后
“Hel”然后…
“地狱”等等 但所有人都立即表示感谢,感谢您抽出时间
函数类型(字符串、长度){
if(长度<字符串长度+1){
console.log(string.slice(0,长度),length);
setTimeout(类型(字符串,长度+1),500);
}
}
输入(“你好,我的名字是……”,1)代码>之所以发生这种情况,是因为您不是将函数作为参数传递,而是在参数的位置调用函数
您可以使用bind
传递函数的参数引用。像这样:
函数类型(字符串、长度){
if(长度<字符串长度+1){
console.log(string.slice(0,长度),length);
setTimeout(type.bind(null,string,长度+1),500);
}
}
输入(“你好,我的名字是……”,1)代码>之所以发生这种情况,是因为您不是将函数作为参数传递,而是在参数的位置调用函数
您可以使用bind
传递函数的参数引用。像这样:
函数类型(字符串、长度){
if(长度<字符串长度+1){
console.log(string.slice(0,长度),length);
setTimeout(type.bind(null,string,长度+1),500);
}
}
输入(“你好,我的名字是……”,1)代码>问题在于没有将正确的第一个参数传递给。它将函数引用作为第一个参数,但是您正在传递一个函数调用——您正在调用类型立即运行,并且类型的返回值(在您的情况下,未定义的)被传递到设置超时()
如果将函数调用包装在函数声明中,问题就解决了
函数类型(字符串、长度){
if(长度<字符串长度+1){
console.log(string.slice(0,长度),length);
timer=setTimeout(function(){type(string,length+1)},500);
}
}
输入(“你好,我的名字是……”,1)代码>问题在于没有将正确的第一个参数传递给。它将函数引用作为第一个参数,但是您正在传递一个函数调用——您正在调用类型立即运行,并且类型的返回值(在您的情况下,未定义的)被传递到设置超时()
如果将函数调用包装在函数声明中,问题就解决了
函数类型(字符串、长度){
if(长度<字符串长度+1){
console.log(string.slice(0,长度),length);
timer=setTimeout(function(){type(string,length+1)},500);
}
}
输入(“你好,我的名字是……”,1)代码>之所以发生这种情况,是因为您没有将函数作为参数传递,而是在参数位置调用函数。setTimeout(somefunction(),delay)
调用somefunction()
并将其返回值指定为要延迟的回调。之所以发生这种情况,是因为没有将函数作为参数传递,您正在调用参数位置上的函数。setTimeout(somefunction(),delay)
调用somefunction()
并将其返回值指定为要延迟的回调。谢谢,我现在看到我的错误了@不客气。别忘了投票,点击答案左上角的复选标记,将这个答案标记为“答案”。谢谢,我现在看到我的错误了@不客气。不要忘记向上投票,点击答案左上角的复选标记,将此答案标记为“答案”。