JS - задерживать выполнение скрипта до тех пор, пока все данные не будут определены / доступны

У меня есть скрипт, который использует данные из слоя данных. Если я запускаю сценарий слишком рано, он не работает, потому что данные (я имею в виду в сценарии) еще не определены. Поэтому я отложил сценарий (1500 мс). Проблема в том, что скрипт должен запускаться как можно раньше. Иногда данные (из уровня данных) доступны быстрее, иногда позже...

поэтому вместо того, чтобы задерживать мой сценарий всегда на 1500 мс, я хотел бы запустить сценарий через 500 мс, и если он не работает, потому что данные / свойство еще не определены / недоступны, я хочу запустить его снова через еще 500 мс.... так далее.

как я мог действовать это?

Спасибо!!

1 ответ

// set function to run every 500 ms, and store reference
var interval = setInterval(function(){
    // if the data is available, clear the interval, and process data
    if(typeof data !== 'undefined') {
        clearInterval(interval)
        console.log('data is ready');
        // ready to start processing
    }
}, 500);

Однако этот метод редко является лучшим подходом. В зависимости от того, как ваши данные станут доступны, было бы лучше использовать обратные вызовы / обещания или прослушиватели событий.

Например, используя jQuery для получения некоторых данных, затем отреагируйте в обратном вызове...

$.get('/some/data/uri', function(data){ /* do something with data */ });
Другие вопросы по тегам