Предположим, что загружаю какой-то 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
)? Если нет, я в безопасности, или есть другие вещи, которые я должен делать?