gpt4 book ai didi

javascript - 如何使用带参数的 JS clearTimeout?

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:07 25 4
gpt4 key购买 nike

我想创建一个非常简单的函数来模拟百叶窗的运动。它在服务器上运行,该服务器将接收带有 direction 参数的请求,该参数指示百叶窗是否应该UPDOWN 还是应该STOP

模拟应该是这样工作的:请求带有direction参数,服务器响应百叶窗正在MOVING。无论方向如何,移动都会持续 10 秒,正如在 setTimeout 函数中可以看到的那样。要点是,如果服务器收到带有 direction === STOP 的请求,那么服务器应该调用 clearTimeout 来“停止”百叶窗的移动并返回不同的百叶窗状态,表示百叶窗处于 PARTLY_CLOSED

到目前为止,它是这样工作的,如果我发送带有某个方向的请求,服务器会按其应有的方式响应 MOVING 。当我在“移动”期间调用 clearTimeout 时,它实际上启动了第二个 setTimeout 函数。

我的问题是:如何使代码正确以及如何参数化 setTimeout 函数?

这是代码:

let blindState = "OPENED";
const blindMovementFunction = (direction) => setTimeout((direction) => {
console.log("### direction", direction);
if (direction === "UP") {
blindState = "OPENED"
} else if (direction === "DOWN") {
blindState = "CLOSED";
}
}, 10000);

端点内部的使用:

if (req.query.direction === "STOP") {
console.log("### blindMovementFunction", blindMovementFunction);
clearTimeout(blindMovementFunction);
blindState = "PARTLY_CLOSED";
res.send(blindState);
} else {
blindState = "MOVING";
res.send(blindState);

blindMovementFunction(req.query.direction);
}

最佳答案

您正在将函数引用传递给clearTimeout,它需要setTimeout()返回timeoutID

在全局范围内定义

var timeoutID;

通过setTimeout()方法保留timeout-id返回

timeoutID = blindMovementFunction(req.query.direction)

clearTimeout(timeoutID);

关于javascript - 如何使用带参数的 JS clearTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48021868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com