const start = 11 * 60 * 60;
const end = 18 * 60 * 60;
const step = 30 * 60;
const count = Math.floor((end - start) / step);
const result: string[] = [];
const date = new Date();
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
date.setMilliseconds(0);
const format = (date: Date) => date.toLocaleTimeString('ru-RU', { hour: '2-digit', minute: '2-digit' });
for (let index = 0; index < count; index++) {
const from = new Date(date.getTime() + (start + step * index) * 1000);
const to = new Date(date.getTime() + (start + step * (index + 1)) * 1000);
result.push(`${format(from)} - ${format(to)}`);
}
console.log(result);
/* [ '11:00 - 11:30', '11:30 - 12:00', '12:00 - 12:30', '12:30 - 13:00', '13:00 - 13:30',
'13:30 - 14:00', '14:00 - 14:30', '14:30 - 15:00', '15:00 - 15:30', '15:30 - 16:00',
'16:00 - 16:30', '16:30 - 17:00', '17:00 - 17:30', '17:30 - 18:00' ] */
const inputOutput = document.getElementById('usd');
const value = (input.value * 73.84).toFixed(5) + ' $';
inputResult.value = value;
inputOutput.textContent = value;
const resultContainer = document.querySelector('.result');
if (resultContainer.classList.contains('win')) {
// ...
} else if (resultContainer.classList.contains('lose')) {
// ...
}
then
, catch
и finally
интерпретатор не будет ждать их выполнения и пойдет дальше. В итоге после "обхода" кода есть два "места", в которые вернется результат обещания. В первом promise
, во время выполнения then
мы не знаем, сколько времени потребуется для его выполнения, поэтому интерпретатор идет дальше, к следующему обещанию (в данном случае - "привязке"). Если хотите сделать так, чтобы обещания выполнялись именно в том порядке, который описан в коде, то надо писать как-то так:(async () => {
const promise = new Promise((resolve, reject) => {
resolve(console.log('start'));
});
await promise
.then(x => console.log('x'))
.then(y => console.log('y'));
await promise.then(z => console.log('z'));
})();
const start = async () => {
const promise = new Promise((resolve, reject) => {
resolve(console.log('start'));
});
await promise
.then(x => console.log('x'))
.then(y => console.log('y'));
await promise.then(z => console.log('z'));
};
start();
const promise = new Promise((resolve, reject) => {
resolve(console.log('start'));
});
await promise
.then(x => console.log('x'))
.then(y => console.log('y'));
await promise.then(z => console.log('z'));
Ctrl + Shit + P > Configure User Snippet > SCSS
scss.json
. И scope
уберите. console.log(Number.MAX_SAFE_INTEGER < 9999999999999999); // true
console.log(9999999999999999n); // 9999999999999999n
const getCharsUntilNumbers = string => string.match(/^([a-z]+)/i)?.[0];
console.log(getCharsUntilNumbers('dev05_dddd')); // 'dev'
console.log(getCharsUntilNumbers('01')); // undefined
console.log(getCharsUntilNumbers('de06')); // 'de'
- a9.forEach(function(elem) {
- elem.toLowerCase();
- });
-
- return a9;
+ return a9.map(function (elem) {
+ return elem.toLowerCase();
+ });
- a9.forEach(function(elem) {
- elem.toLowerCase();
- });
+ a9.forEach(function(elem, i, arr) {
+ arr[i] = elem.toLowerCase();
+ });
- a9.forEach(function(elem) {
- elem.toLowerCase();
- });
+ for (let index = 0; index < a9.length; index++) {
+ a9[index] = a9[index].toLowerCase();
+ }
const handleIndicatorChangeOne = (event) => {
setValue(values => [Number(event.target.value) || '', values[1]]);
};
const handleIndicatorChangeTwo = (event) => {
setValue(values => [values[0], Number(event.target.value) || '']);
};
onChange
у TextField
необходимо поменять на handleIndicatorChangeOne
и handleIndicatorChangeTwo
.