Вы можете попытаться, добавив await
и Promise
:
jQuery("#btn_trendyolStocksSYNC").click(async function() {
for(var product in all){
var colors = all[product];
for(var singleColor in colors[0]){
var size = colors[0][singleColor];
for(var index in size){
var singleSize = size[index];
await new Promise(resolve => setTimeout(function (){
console.log('Waited');
resolve();
}, 5000));
}
}
}
});
Это просто скажет вашему циклу остановиться и продолжить только после того, как объект Promise вызовет свою функцию параметра resolve
,Таким образом, ваша задержка должна произойти до следующей итерации. Это важный код:
await new Promise(resolve => setTimeout(function (){
console.log('Waited');
resolve();
}, 5000));
Он просто создает Promise
, который мы будем разрешать, как только тайм-аут пропустит 5000 миллисекунд. Затем мы говорим нашему циклу просто дождаться этого завершения, прежде чем перейти к следующему элементу.
Примечание Вам также необходимо добавить async
в вашу функцию-обработчик, чтобы javascript знал, что эта функция можетподожди и возьми столько, сколько нужно.