JavaScript setTimeout() : Type Error on line callback is not a function at blob: callback is not a function

标签 javascript

我正在创建一个延迟函数,它接受回调和以毫秒为单位的等待时间作为参数。 delay 应返回一个函数,该函数在被调用时会在执行前等待指定的时间量。在这里,我使用 setTimeout() 在它执行函数之前设置一个计时器。

function delay (callback, time) {
  function waitOnMe(...args) {
    return setTimeout(time);
  }
  return waitOnMe;
}

我使用以下代码来测试上面的代码:

let count = 0;
const delayedFunc = delay(() => count++, 1000);
delayedFunc();
console.log(count);                                                  // should print '0'
setTimeout(() => console.log(count), 1000); // should print '1' after 1 second

然后我得到以下输出和错误消息(请注意,第三个输出是在第二行按要求出现后大约 1 秒生成的)。

0
Type Error on line callback is not a function at blob: callback is not a function
0

我想我得到这个错误是因为函数没有从延迟返回以在指定的等待时间后执行回调,但我不确定。

最佳答案

setTimeout 的第一个参数应该是回调,第二个参数是延迟。其余参数用作回调的参数,可以通过扩展语法传递。

function waitOnMe(...args) {
    return setTimeout(callback, time, ...args);
}

关于JavaScript setTimeout() : Type Error on line callback is not a function at blob: callback is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62827737/

相关文章:

javascript - Bootstrap 导航转到部分

javascript - 基于层级节点树构建数组

javascript - Jquery 压缩语句而不损失可读性

javascript - Ajax 函数中的多个字段

javascript - Cordova 图像选择器转换为 base64

javascript - 无法将数据传递到 Material 对话框 - Angular2+

以相同速度运行的 Javascript 游戏循环?

javascript - 在页面调整大小时更新窗口尺寸

货币格式的Javascript正则表达式

javascript - jQuery 隐藏/显示 div,带有单选按钮控件