Как сделать, чтобы браузер не падал при arr, состоящим из 18000 7-ми символьных строк? Например, дожидался, пока придёт одна пачка из 20 запросов, потом вторая, а не просто по фасту наполнить память одними исходящими запросами.
Это брутфорсер для промокодов на одном сайте, я нашёл одну закономерность и пытаюсь эксплуатировать.
for(let testword of arr){
$.getJSON('https://client.iqmining.com/promocheck', {promocode: testword, life: "y1"}, function(data){
if (data.discount > 0){
console.log(data.discount);
console.log(testword);
}
});
}
Можно сделать с помосщью Promise
и Promise.all
Рботает как просили, отправляем запросы пачками по 5, ждем пока пачка отработает полностью(Promise.all
) и запускаем следующую и так пока не закончатся запросы.
Примерно так :
const all = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
packageCount = 5;
completeAll(all, packageCount);
function createPromise(a, i) {
return new Promise(function(resolve, reject) {
setTimeout(() => {
console.log(a);
resolve(a);
}, 250 * i);
});
}
function completeAll(arr, pkgCnt) {
let tmpArr = [...arr],
promises = [];
for (let i = 0; i < pkgCnt; i++) {
if (tmpArr.length === 0) break;
promises.push(createPromise(arr[i], i));
tmpArr.shift();
}
Promise.all(promises).then(values => {
console.log('package completed');
if (tmpArr.length > 0)
completeAll(tmpArr, pkgCnt);
});
}
ПС : важно учитывать следующее
Если одно из переданных обещаний будет отклонено, Promise.all будет немедлено отклонен со значением отклоненного обещания, не учитывая другие обещания
Как выход с етой проблемы в вашем случаи предлагаю просто резолвить промисы в любом случаи, не важно успешен запрос или нет, а потом просто анализировать результаты.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Нигде не нашел однозначного ответа на этот вопрос
При клике по ссылке мне нужно открыть в модальном окне (на materialize-css) определенный слайдПытаюсь сделать как здесь, но открывается все равно...
Как я могу выполнить QSqlRelationalTableModel::setFilter с оператором 'WHERE' ??? Для примера: