могу ли я запустить отправку сетевого запроса и в то время пока браузер его отправляет и дожидается ответа выполнить какието лакальные операции.
В том смысле отправляет ли браузер запрос когда я создаю промис,
Или есть какие-то неочевидное поведение
await promise
) не моментально, по получению данных а после того как обработает текущий пул задач в eventloop (это достаточно неточное объяснение, так как ожидание результата промиса также находится в виде задачи в пуле, но для общего понимания подойдет) const promise = getResource() // Обращение к серверу которое занимает ровно одну секунду
// Синхронные операции на выполнение которых уходит ровно одна секунда
// я понял так: что бы тут не происходило, ровно через секунду оно будет прервано
await promise // На данный момент сетевой запрос уже выполнен, И просто ожидает пока я его "запрошу"?
// я понял так: в обязательном порядке кинет сюда
const promise = getResource() // Обращение к серверу которое занимает ровно одну секунду
// ** каким то образом ограничивает время ожидания ответа фиксированной одной секундой
// Синхронные операции на выполнение которых уходит ровно одна секунда
// ** обеспечивает временные рамки выполнения синхронного кода ровно одной секундой
await promise // На данный момент сетевой запрос уже выполнен, И просто ожидает пока я его "запрошу"?
стартуем
запросили данные у getResource. прошло 4 мс
синхронный код завершился. прошло 2000 мс
сработал setTimeout. прошло 2053 мс
дождались данных от getResource any data . прошло 2054 мс
await promise
мы попадем не ранее чем эти запросы/вычисления закончатся) т.е. берется данные из html[lang]
navigator ? (window.navigator.language ||
window.navigator.systemLanguage ||
window.navigator.userLanguage) : "ru";
language = language.substr(0, 2).toLowerCase();
var a = [false, false, false, false, true, false, false, false];
// один из элементов равен true
var oneIsTrue = a.some(v=>v);
// один из элементов равен false
var oneIsFalse = a.some(v=>!v);
// все элементы равны true
var allIsTrue = a.every(v=>v);
// все элементы равны false
var allIsFalse = a.every(v=>!v);
из общих рекомендаций могу выделить следующие:
1. используйте те генераторы, которые предоставляют выбор различных генераторов случайных чисел
2. сам генератор случайных чисел должен выдавать числа, распределенные равномерно и быть из числа условно криптостойких
3. достаточно большая длинна пароля и использование при его генерации всех букв алфавита в различных регистрах, цифр и спецсимволов даже при использовании некриптостойких генераторов может служить гарантией от взлома