let timerId = 0; // вынес так как не знал как таймаут потом в каждой итерации сбрасывать
try {
const firstPromiseResult = await Promise.race([
new Promise((resolve) => {
timerId = setTimeout(()=> {
resolve('TIMEOUT')
}, 1000 * 60 * 4) // время через которое мы идём дальше по циклу( тут его не видно(цикла))
}),
order(Id) // наш запрос к стороннему апи, тут без await т.к. зависает и проблема остаётся
]);
}
catch(e) {
console.log('error_text:', e)
}
finally{
clearTimeout(timerId); // сбрасываем таймаут в любом случае, чтобы не перегружать систему
}
}
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
npm config delete script-shell
v-mask="{regex: '^([0-9]{1,2})([.,][0-9]{1,2})?$', placeholder: '', showMaskOnHover: false, showMaskOnFocus: false}"
const value = val.target.value.replace('.',',');
const delay = 300000; // 300 секунд таймера (5 мин), статичное и не меняется
const resentDelay = 30000; // начальное время остаточного времени счётчика и постоянно уменьшается:
const timeStart = Date.now(); // время когда счётчик запустился (тип number в миллисекундах)
const currentDelay = Math.round( (resentDelay - (Date.now() - timeStart))/1000 ); /* вычисляем оставшееся время счётчика, вычисление это делаем каждую секунду в setInterval*/
// узнаем текущий активный объект (сразу выбран в меню табов)
const currentActiveObject = this.objectManager.clusters.state.get('activeObject');
// создаем монитор и следим за полем 'activeObject'
this.activeObjectMonitor = new ymaps.Monitor(this.objectManager.clusters.state);
this.activeObjectMonitor.add('activeObject', (newActiveObject) => {
console.log(newActiveObject);
}
setTimeout(() => test.css("display", "none"), 2000);
<!--у меня вариант ниже работает только-->
<meta name="http-equiv" content="Content-type: text/html; charset=UTF-8">
<meta charset="UTF-8">
<script src="" charset="utf-8"></script>
AddCharset utf-8 .js
var img = document.createElement('img');
img.src = 'http://ifndef.ru/s/1.png';
img.id ='go';
img.style.top='10%';
img.style.left='50%';
get.appendChild(img);
.slide {
background-repeat: no-repeat;
background-position: center;
}
.slide {
background-position: center;
background-size: cover;
}
get palletTasks(): Array<Object>{
return this.scannedWare ?
(this._palletTasks.filter(a => a['positions'].some(b => b['wares'].some(c => c['code'] === this.scannedWare['data']['code']))) ) :
(this._palletTasks || []);
}
get replenishment_guid(): string {
return this._replenishment_guid;
}
set palletTasks(data: Array<Object>) {
this.selected = 0;
const pallets: Object = {};
data.forEach(dataValue => {
dataValue['wares'].forEach(waresValue => {
if (!pallets[waresValue['object']['palletBarcode']]) {
pallets[waresValue['object']['palletBarcode']] = {
positions: {},
object: waresValue['object'],
task: waresValue['task']['guid'],
rest: 0,
replenish: 0,
selected: waresValue['object']['select'],
};
if (waresValue['object']['select']) {
this.selected++;
}
}
pallets[waresValue['object']['palletBarcode']]['positions'][dataValue['sale']['positionBarcode']] = {
...dataValue['sale'],
wares: waresValue['wares'].sort((a, b) => b['emergency'] ? 1 : -1)
};
waresValue['wares'].forEach((waresItem) => {
pallets[waresValue['object']['palletBarcode']]['rest'] += waresItem['rest'];
pallets[waresValue['object']['palletBarcode']]['replenish'] += waresItem['replenish'];
});
});
});
this._palletTasks = Object.keys(pallets).map((palletKey) => {
let wares_count = 0;
let wares_emergency = 0;
pallets[palletKey]['positions'] = Object.keys(pallets[palletKey]['positions']).map((positionKey) => {
wares_count += pallets[palletKey]['positions'][positionKey]['wares'].length;
wares_emergency += pallets[palletKey]['positions'][positionKey]['wares'].reduce(
(acc, cur) => acc + (cur['emergency'] ? 1 : 0), 0);
return pallets[palletKey]['positions'][positionKey];
});
pallets[palletKey]['count'] = wares_count;
pallets[palletKey]['emergency_count'] = wares_emergency;
return pallets[palletKey];
}).sort((a, b) => b['emergency_count'] - a['emergency_count']);
this.dictPallets = pallets;
this._replenishment_guid = data[0]['wares'][0]['replenishment']['guid'];
}
ngOnInit() {
this.parent.backButton = '/';
this.parent.header = 'Пополнение: ' + this.localService.direction.name;
this.rbs.setDownloadScreen();
this.localService.getData().subscribe(
(res: Object) => this.handleGetData(res),
(err: any) => this.handleMessage(err)
);
}
@ResponseHandle()
private handleGetData(ans: Object): void {
if (ans['rows'].length > 0) {
this.palletTasks = ans['rows'];
this.rbs.finalScreen();
} else {
this.handleMessage('Задачи отсутсвуют');
this.parent.back();
}
}