Здравствуйте, товарищи!
inb4: товарищи в овраге лошадь доедают
А теперь по существу. Есть одно расширение для Chrome/ium, которое использует часто однотипные AJAX-запросы к API Небезызвестной Социальной Сети. Проблема в том, что Небезызвестной Социальной Сетью установлено ограничение запросов, равное 3 штукам в секунду. Казалось бы, что необычного, но в JS нет своего аналога sleep(millisecs) или wait(millisecs)! А встроенный setTimeout() и jQuery'евский delay() работают асинхронно, чего в моём случае никак допустить нельзя. Более того, я пробовал следующий код:
$.queue(function(){ $.getJSON(vk_api + "utils.resolveScreenName", {
"screen_name": target,
"v": "5.24"
}).delay(300).done(function(data){ console.log(data); target_url = data.response.object_id; }).dequeue(); });
$.queue(function(){ $.each(filter_arr, function(i, item){
$.getJSON(vk_api + "utils.resolveScreenName", {
"screen_name": item,
"v": "5.24"
}).delay(300*i).done(function(data){
console.log(data);
public_filter.push(data.response.object_id);
});
}).dequeue(); });
Здесь время задержки наращивается в процессе выполнения, и по идее, должен создаваться эффект синхронизации, но проверить я это не могу, бо console.log'и не выводят ровным счётом ничего, хотя без delay() всё выводили.
Что же делать, товарищи? Любой костыль хорош, лишь бы работало.
Я тут слышал, мол, можно AJAX-запрос на PHP-страницу отправлять, в которой прописан sleep(). Но это лютый костыль.