В бэм сказано, что модификатор не может задавать позиционирование.
margin
и прочие вещи, которые влияют на окружение, нельзя задавать для блока и модификатора блока, но можно задавать для элемента и модификатора элемента.block--margin20
, на который вы сослались, считаю ошибочным. ??
$field1 = 'Habr';
$field2 = 'QnA';
$array = [
'id' => $data->xxx->yyy->id ?? null,
'name' => $data->{'name'} ?? 'untitled',
'site' => $data->$field1->$field2 ?? 'поиск';
];
если запрошенного поля нет, ошибку не бросает, а берет значение по умолчанию, которое после ??
`
:$('#bombfire').html(`
<svg>...</svg>
`);
Только в обратных "бэк-тиках" можно текст разбивать на строки. Подробнее про строки и кавычки.const str = ' \
line 1 \
line 2 \
';
Кого можно назвать лучшим по соотношению цена/качество?
И безопасно ли заказать ПК на Озоне или лучше не рисковать?
$items = Trip::when($request->get('day_date'), function($query, $date){ $query->where('date', $date); })
->when($request->get('city_departure'), function($query, $departure_id){ $query->where('departure_id', $departure_id); })
->when($request->get('city_arrival'), function($query, $landing_id){ $query->where('landing_id', $landing_id); })
->get();
return view('search')->with(['mass' => $items]);
function randomDelay(min = 250, max = 750) {
return new Promise((resolve) => {
const ms = Math.random() * (max - min) + min;
setTimeout(resolve, ms);
});
}
function downloadAll(urls, limit = 4) {
return new Promise((resolveAll, rejectAll) => {
const result = [];
const iter = urls.entries();
let fulfilled = 0;
const next = () => {
const { done, value } = iter.next();
if (done) {
if (fulfilled === urls.length) {
resolveAll(result);
return;
}
return;
}
const [index, url] = value;
const onFulfilled = (val) => {
result[index] = val;
fulfilled += 1;
next();
};
randomDelay()
.then(() => fetch(url))
.then(onFulfilled, rejectAll);
};
for (let i = 0, l = Math.min(limit, urls.length); i < l; i++) {
next();
}
});
}
const urls = Array.from(
{ length: 100 },
(_, i) => `https://jsonplaceholder.typicode.com/todos/${i + 1}`
);
(async () => {
const responses = await downloadAll(urls, 2);
const data = await Promise.all(responses.map((r) => r.json()));
console.log(data);
})();