나는 창 블라인드의 움직임을 시뮬레이션하는 아주 간단한 함수를 만들고 싶었다. 블라인드가 UP
, DOWN
또는 STOP
이되어야하는지 여부를 나타내는 direction
매개 변수가있는 요청을 수신하는 서버에서 실행됩니다.매개 변수와 함께 JS clearTimeout을 어떻게 사용합니까?
시뮬레이션은 다음과 같이 작동합니다. 요청은 direction
매개 변수와 함께 제공되고 서버는 블라인드가 MOVING
이라고 응답합니다. 방향에 관계없이 움직임은 setTimeout
기능에서 볼 수 있듯이 10 초 동안 지속됩니다. 요점은 서버가 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);
사용법 : 여기
코드입니다 당신은clearTimeout
에 함수 참조를 전달하는
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);
}
, 그것의 setTimeout 호출에 의해 생성되는 ID로 사용되어야로 제한-ID의 수익을 지속. – Axnyff
@Axnyff 귀하의 의견을 조금 더 넓힐 수 있습니까? 모든 스 니펫은 코드의 다른 위치에 배치됩니다. 첫 번째 스 니펫은 '전역'이고 두 번째 스 니펫은 요청의 처리기 기능 안에 있습니다. ID를 어디에 할당해야합니까? 요청 처리기 함수에서? –