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 */ });