<?php
const ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
function encode(int $val, string $alphabet): string
{
if ($val === 0) {
return $alphabet[0];
}
$base = strlen($alphabet);
$result = '';
while ($val > 0) {
$digit = $val % $base;
$val = intdiv($val, $base);
$result = $alphabet[$digit] . $result;
}
return $result;
}
print encode(2452221399229541659, ALPHABET);
// 2V9coTtB2dB
$isNotOverlapped = $range2start > $range1end || $range1start > $range2end;
$isOverlapped = !($range2start > $range1end || $range1start > $range2end);
$isOverlapped = $range2start <= $range1end && $range1start <= $range2end;
$get = $this->get() ?? "\x00";
const temp = data.reduce(
(acc, cur) => {
acc.bank_props[cur.bank_props.id] = cur.bank_props;
acc.settlements[cur.bank_props.id] = cur.settlements;
return acc;
},
{ bank_props: {}, settlements: {} }
);
const result = {
bank_props: Object.values(temp.bank_props),
settlements: Object.values(temp.settlements),
};
WebAPI браузера поедоставляет вещи типа setTimeout, или async await, коллбек-функции которые закидываются в очередь, а оттуда в порядке своей приоритетности попадают в стек по очереди. Промисы обрабатываются в приоритетном порядке.Обычные callback-функции не попадают в очередь, они вызываются в общем стеке. Кроме промисов в приоритетную очередь микрозадач функция может быть добавлена через queueMicrotask(function).
А что если "асинхронные" операции занимают много памяти и выполняются долго. Если они выполняются в том же стеке, то они также перекроют доступ ко всем остальным операциям?Асинхронные операции выполняются отдельными служебными потоками параллельно с основным стеком. Поэтому сами они не могут заблокировать основной стек. По завершению/таймеру асинхронная операция кладёт функцию в очередь микро- или макрозадач.
{
"jsonrpc": "2.0",
"id": 1,
"result": 54321
}