<div class="budget-value"></div>
budget_value = document.getElementsByClassName('budget_value')[0]
budget_value.textContent = money
preg_match_all('/test."([\w\/]+\.php)"/', $str, $matches);
$matches = array_pop($matches);
результат времени как при параллельном выполнении
Получается что new Promise( уже запускает на выполнение код? Его можно как то отложить?
const getA = () => new Promise((resolve, reject) => {
console.time('getA');
setTimeout(() => {
console.timeEnd('getA');
resolve(4)
}, 6000)
});
const getB = () => new Promise((resolve, reject) => {
console.time('getB');
setTimeout(() => {
console.timeEnd('getB');
resolve(2)
}, 2000)
});
console.time('get sum');
getA().then(a => {
getB().then(b => {
console.log(`result: ${a + b}`);
console.timeEnd('get sum');
})
});
Среда исполнения JS уже умеет параллельно?
let money, price,
let money,
price;
Есть ли что-то типо delegate() для такого случая?
В результирующем массиве значения исходного массива с числовыми ключами будут перенумерованы в возрастающем порядке, начиная с нуля.
$result = $array1 + $array2;
рейтинг для каждой книги - COUNT записей
SELECT b.*, COALESCE(SUM(br.rating), 0) rating
FROM books b
LEFT JOIN books_rating br ON br.book_id = b.id
GROUP BY b.id
можно открыть в конце концов build.js и увидеть там...
Консоль говорит, что не может найти product, потому что я не правильно использую хуки.
var prod = product;
product
? Это который в data
лежит? Тогда должно быть this.product
. Почему вы пытаетесь определить переменную с таким же именем как и у параметра? А при вызове в хуке mounted
- почему ничего не передаёте в метод results
, у него же определён параметр?mounted
при вызове results
передавайте ему product
- this.results(this.product)
. Или так: строку удаляете, удаляете параметр prod
, в вызове axios.get
вместо prod
используете this.product
. const days = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'];
// или
const days = Array.from({ length: 7 }, (_, i) => new Date(1, 0, i)
.toLocaleString('ru', { weekday: 'long' })
.replace(/./, m => m.toUpperCase()
));
for (
let iDay = 0;
confirm(`${days[iDay]}. Хотите увидеть следующий день?`);
iDay = (iDay + 1) % days.length
) ;
сделал это так, но мне кажется, это не совсем производительно и есть решение получше
const lastId = arr.reduce((id, n) => n.glob_id || id, null);
// или
const lastId = (arr.filter(n => n.glob_id).pop() || {}).glob_id;
// или
const lastId = ([...arr].reverse().find(n => n.glob_id) || {}).glob_id;
// или
const lastId = arr.map(n => n.glob_id).filter(Boolean).pop();
let lastId = null;
for (let i = arr.length; i--;) {
if (arr[i].glob_id) {
lastId = arr[i].glob_id;
break;
}
}
const lastId = arr.findLast(n => n.glob_id)?.glob_id;
<div id="map" class="black-and-white"></div>
.black-and-white {
filter: grayscale(100%);
}
document.querySelector('#map').addEventListener('click', function() {
this.classList.remove('black-and-white');
}, { once: true });
const parentSelector = 'div';
const childSelector = 'p';
const className = 'there';
const siblingsSelector = `${parentSelector} > ${childSelector}`;
const elementSelector = `${siblingsSelector}.${className}`;
const index = Array.prototype.findIndex.call(
document.querySelectorAll(siblingsSelector),
n => n.classList.contains(className)
);
let index = -1;
for (
let el = document.querySelector(elementSelector);
el;
index++, el = el.previousElementSibling
) ;
const el = document.querySelector(elementSelector);
const index = el ? [...el.parentNode.children].indexOf(el) : -1;
childSelector
, и они не должны учитываться, то третий вариант не подходит, а во втором надо заменить index++
на index += el.matches(childSelector)
. document.addEventListener('keypress', function(e) {
if (e.keyCode === 32) {
console.log('space pressed');
}
});
document.addEventListener('wheel', function(e) {
const event = new Event('keypress');
event.keyCode = 32;
document.dispatchEvent(event);
});