回调函数如何与设置超时函数一起使用?
How does the callback function work with the set timeout function?
module.exports = (x, y , calllback) => {
if (x <= 0 || y <= 0) {
setTimeout(() => callback(new Error("Rectangle dimension should be greater than zero"), null),
2000);
}
else {
setTimeout(() =>
calllback(null, {
perimeter: () => 2 * (x + y),
area: () => x * y
}),
2000);
}
}
我的问题是:为什么我必须在回调函数之前做 () => 因为 setTimeout 需要一个函数作为输入,所以为什么我不能直接做 setTimeout(callback(...), 2000 ).
可能是我对这个回调函数有一定的了解,如果有人能帮帮我就好了!
感谢您的每一条评论。
您需要将函数传递给 setTimeout,因此在某些情况下您可以这样做:
setTimeout(callback, 2000);
但是,在执行此操作时,您将放弃对将哪些值传递到回调中的任何控制。所以这只有在回调不需要任何数据时才有效。如果是这样,您将需要另一种方法。
执行以下操作不是一个选项:
setTimeout(callback(null, {
perimeter: () => 2 * (x + y),
area: () => x * y
}), 2000);
它不是一个选项的原因是这段代码没有将函数传递给 setTimeout。相反,它会立即 调用回调,然后将其 return 值 传递给 setTimeout。
因此,执行此操作的方法是您展示的代码片段中的方法:创建一个新函数,该函数的主体调用回调并传入适当的值。我们将这个新函数传递给 setTimeout,然后 2 秒后它被调用,它转过来调用回调。
实际上还有一个选项,尽管它特定于 setTimeout,并且不适用于许多其他使用回调的东西。 setTimeout 允许您将其他参数传递给 setTimeout,然后这些参数将传递给您的回调:
setTimeout(
callback,
2000,
null,
{
perimeter: () => 2 * (x + y),
area: () => x * y
}
)
您应该能够向 setTimeout
函数发送回调。
setTimeout(callback, 2000)
但是你不能像这样调用函数
setTimeout(callback(), 2000)
module.exports = (x, y , calllback) => {
if (x <= 0 || y <= 0) {
setTimeout(() => callback(new Error("Rectangle dimension should be greater than zero"), null),
2000);
}
else {
setTimeout(() =>
calllback(null, {
perimeter: () => 2 * (x + y),
area: () => x * y
}),
2000);
}
}
我的问题是:为什么我必须在回调函数之前做 () => 因为 setTimeout 需要一个函数作为输入,所以为什么我不能直接做 setTimeout(callback(...), 2000 ). 可能是我对这个回调函数有一定的了解,如果有人能帮帮我就好了!
感谢您的每一条评论。
您需要将函数传递给 setTimeout,因此在某些情况下您可以这样做:
setTimeout(callback, 2000);
但是,在执行此操作时,您将放弃对将哪些值传递到回调中的任何控制。所以这只有在回调不需要任何数据时才有效。如果是这样,您将需要另一种方法。
执行以下操作不是一个选项:
setTimeout(callback(null, {
perimeter: () => 2 * (x + y),
area: () => x * y
}), 2000);
它不是一个选项的原因是这段代码没有将函数传递给 setTimeout。相反,它会立即 调用回调,然后将其 return 值 传递给 setTimeout。
因此,执行此操作的方法是您展示的代码片段中的方法:创建一个新函数,该函数的主体调用回调并传入适当的值。我们将这个新函数传递给 setTimeout,然后 2 秒后它被调用,它转过来调用回调。
实际上还有一个选项,尽管它特定于 setTimeout,并且不适用于许多其他使用回调的东西。 setTimeout 允许您将其他参数传递给 setTimeout,然后这些参数将传递给您的回调:
setTimeout(
callback,
2000,
null,
{
perimeter: () => 2 * (x + y),
area: () => x * y
}
)
您应该能够向 setTimeout
函数发送回调。
setTimeout(callback, 2000)
但是你不能像这样调用函数
setTimeout(callback(), 2000)