У меня возникли проблемы при попытке выяснить, как FP работает с чем-то вроде событий мыши.Это пример того, как использовать событие mousemove.
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
let mouseObject = {};
const mouseFn = () => mouseObject;
const onMove = ev => {
mouseObject = {x:ev.x, y:ev.y}
};
document.addEventListener('mousemove',onMove);
const loop = (fn) => {
console.log(fn());
requestAnimationFrame(() => loop(fn));
}
loop(mouseFn);
</script>
</head>
<body>
</body>
</html>
Как вы можете видеть из кода, я добавляю прослушиватель, а затем создаю цикл с requestAnimationFrame.
Что мне не нравится вКод в том, что в функции «onMove» я непосредственно изменяю mouseObject, а также в «mouseFn» я возвращаю mouseObject, который не передается в качестве параметра функции.
Но я не вижулюбой лучший способ сделать это и обновить mouseObject внутри цикла