Если какая-либо функция передается в requestAnimationFrame()
, как эта функция может обнаружить, что она вызывается внутри кадра анимации?Как определить код, если он запущен внутри кадра анимации?
f.e.
function someFunction() {
if (/* What goes here? */) {
console.log('Inside animation frame.')
}
else {
console.log('Not inside animation frame.')
}
}
// The following lines should not be modified for the answer.
someFunction() // logs "Not inside animation frame."
requestAnimationFrame(someFunction) // eventually logs "Inside animation frame."
Последние две строки не следует изменять. Мне интересно узнать, могу ли я обнаружить ситуацию, не требуя, чтобы пользователь не забывал использовать эту функцию двумя разными способами. Конечный пользователь должен просто использовать функцию, как обычно, не зная, что моя функция определяет прецедент.
Вы всегда можете передать что-то из сайта вызова: 'requestAnimationFrame (function() {someFunction (true)})' vs 'someFunction (false)'. – spender
Это правда, но если моя функция предоставляется другим людям для использования, нет никакой гарантии, что они это сделают. Или другие люди могут даже не знать, что они называют эту функцию опосредованно. – trusktr
Параметры ES6 по умолчанию могут помочь с этим: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters – spender