Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置超时和键入效果_Javascript_Settimeout - Fatal编程技术网

Javascript 设置超时和键入效果

Javascript 设置超时和键入效果,javascript,settimeout,Javascript,Settimeout,我目前遇到了这个问题,我想在这个示例中缓慢地显示一个单词,我想显示“你好,我的名字是…”,但它应该这样记录: “H”然后500毫秒后 “他”然后500毫秒后 “Hel”然后… “地狱”等等 但所有人都立即表示感谢,感谢您抽出时间 函数类型(字符串、长度){ if(长度

我目前遇到了这个问题,我想在这个示例中缓慢地显示一个单词,我想显示“你好,我的名字是…”,但它应该这样记录:

“H”然后500毫秒后
“他”然后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()
并将其返回值指定为要延迟的回调。谢谢,我现在看到我的错误了@不客气。别忘了投票,点击答案左上角的复选标记,将这个答案标记为“答案”。谢谢,我现在看到我的错误了@不客气。不要忘记向上投票,点击答案左上角的复选标记,将此答案标记为“答案”。