Предположим, что загружаю какой-то Flash-фильм, который, как я знаю, в какой-то момент в будущем вызовет window.flashReady и установит window.flashReadyTriggered = true.
Теперь у меня есть блок кода, который я хочу выполнить, когда Flash готов. Я хочу, чтобы он выполнял его немедленно, если window.flashReady уже был вызван, и я хочу поместить его в качестве обратного вызова в window.flashReady, если он еще не был вызван. Наивный подход заключается в следующем:
if(window.flashReadyTriggered) {
block();
} else {
window.flashReady = block;
}
Итак, проблема, на которой я основываюсь, заключается в том, что выражение в if условие оценивается как false, но затем до block() может быть выполнено, window.flashReady запускается внешней Flash. Следовательно, block никогда не вызывается.
Есть ли лучший шаблон проектирования для достижения цели более высокого уровня, к которой я иду (например, ручного вызова обратного вызова flashReady)? Если нет, я в безопасности, или есть другие вещи, которые я должен делать?