似乎无法将函数传递给node.js(TypeScript)中的setTimeout参数数组

威利

这有效:

function test(msg:string){
   console.log(msg);
}

setTimeout(test, 1000, ["Hi!"];

...因为它将打印出“嗨!” 一秒钟后转到控制台。

这也适用:

function test(){
   console.log("Hi!");
}

function callTest(next: () => void){
   next();
}

callTest(test);

因为它还打印出“嗨!” 到控制台。

以下结果将导致错误“ TypeError:next不是函数”。为什么?

function test(){
   console.log("Hi!");
}

function callTest(next: () => void){
   next();
}

setTimeout(callTest, 1000, [test]);

在我看来,它确实像一个功能!如果第一个代码段有效,则表明我通常具有使用setTimeout并将窗体发送参数到回调的权限,而第二个代码段则表明这是调用作为参数传入的函数的正确形式-为什么不正确?我在第三个代码段中使用setTimeout起作用吗?

路易

您只需要在传递给参数的末尾直接传递参数列表setTimeout

setTimeout(callTest, 1000, test);

如果您有更多的论点,您可以这样做:

setTimeout(callTest, 1000, test, a, b, c);

无需像调用call那样将它们放在数组中Function.prototype.apply出现错误的原因是,您执行此操作的方式是setTimeout传递一个长度为1的数组,该数组包含对该test函数的引用

您先前使用该字符串的示例起作用的原因是,console.log将数组转储到控制台绝对是可以的。而且TypeScript没有机会发布它,因为这是何时存在要传递给将被调用的函数的参数列表定义setTimeout

declare function setTimeout(handler: any, timeout?: any, ...args: any[]): number;

如您所见,使用可以关闭类型检查any

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript-似乎无法“重置”传递给函数的数组

来自分类Dev

无法获取将传递给函数的参数

来自分类Dev

无法将参数传递给函数

来自分类Dev

无法将char数组传递给函数

来自分类Dev

Node.js Http.Request回调-无法将数据传递给父函数

来自分类Dev

Node.js Http.Request回调-无法将数据传递给父函数

来自分类Dev

如何将参数数组传递给JavaScript中的另一个函数?

来自分类Dev

我无法将链接中的参数传递给函数

来自分类Dev

无法将字典作为参数传递给VBA函数

来自分类Dev

R BB 包 - 无法将参数传递给目标函数?

来自分类Dev

无法将参数传递给循环内的函数调用

来自分类Dev

将变量传递给Node.JS回调函数

来自分类Dev

如何将数组传递给无法修改的函数?

来自分类Dev

无法将多维数组传递给foreach函数-PHP

来自分类Dev

无法将数组传递给函数。为什么不工作?

来自分类Dev

无法将表 td 值传递给 JS 函数变量

来自分类Dev

C-无法将数组引用传递给函数中的指针参数

来自分类Dev

无法将变量从Node.js传递给Jade

来自分类Dev

无法将值传递给jsp中的Alert函数

来自分类Dev

c中的线程无法将函数正确传递给makecontext()

来自分类Dev

在参数数组中传递整数数组

来自分类Dev

将“ *&”参数传递给函数

来自分类Dev

将参数传递给函数

来自分类Dev

将参数传递给函数

来自分类Dev

将数组传递给函数

来自分类Dev

将数组传递给函数

来自分类Dev

将数组作为参数传递给函数

来自分类Dev

Delphi-如何将通用参数传递给接受const参数数组的函数

来自分类Dev

如何将Js函数数组传递给另一个Js函数?