Галоўная / Артыкулы

Рэдкі случай, калі JavaScript выконваецца сінхронна спецыяльна

JavaScript практычна завжды пераходзіць да ціклу запуску змагань, калі чакае на выканання іншых задач. Рэдкі случай, калі віклік навмысна блакуецца, і чаму взагалі існуе такі API.

Выдавец: REACTAPP.TOP4 хв чытання836 слоў

Крыніцы: The Only Exception To Asynchronous JavaScript

У гэтым керавану практыкуець стварыць працэйны маршрут для: Ядзейнага выключэння для асінхроннага JavaScript. Акцэнт ставіцца на кантракты, пераконтроўкі і код, які можна дадаць у рэпазітарый без неабязковасці з’ясоўвання меты. Для агульнага відображэння паказваюцца вхідныя даны, адпаведальны за крок і крытэрыя завершэння пры перадзмене коду. Аперацыйныя працоўнікі должны магчымае перадзначыць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба залічваць параду ж коду прыкладнення. Файлы сераўіса, хранальнікі секрэтных дадзеных і флагі функцый належаць у аднам месца, якое можна пераглядаць працоўнікамі.

Што на самай працэ ўважаецца часткай, якая знаходзіцца за межамы працоўніка

Ёнколі трэба вялічыць тое, што належыць да зоны за межамі працоўніка, неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за крок і крэтыяры выходу. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабходна задокументаваць як шлях успеху, так і шлях вяселення. Перапрыбуткі і обработка некорэктных паведамленняў ёсць часткай продукту. Фіксаваць версіі пад час выканання і запісваць рэзюме, якое запускало дэманстрацыю.

// synchronous, blocks the thread until the disk write finishes
localStorage.setItem('theme', 'dark');
console.log('this line waits for the write above');
// asynchronous, hands off to the network stack
fetch('/api/theme').then(() => {
  console.log('this line runs whenever the response arrives, not before');
});

Чы гэта павінна быць нявядома?

Ёнколі павінна быць нявядома, неабходна перад змянай коду адзначыць вхідныя даны, адпаведальнага за крок і крэтыяры выходу. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшаў, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць. Фіксаваць версіі пад час выканання і запісваць рэзюме, якое запускало дэманстрацыю.

API, які прытамуеюць у будзьму раз

Для API, які прытамуеюць у будзьму раз, пярэд зменой кода неабходна ясная дэфініцыя вхідных даных, адпаведальнага за крок і крэтарыяў завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цэму этапу як кантракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць крытэрыя успеху і адмовіцца ад беззвучнага частковага завершэння. Фіксуйце версіі пад час выканання і запісвуйце дзяўернюючы код, які запускаў дэманстрацыю. Для API, які прытамуеюць у будзьму раз, пярэд зменой кода неабходна ясная дэфініцыя вхідных даных, адпаведальнага за крок і крэтарыяў завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Храніце настройкі параду ад коду прыемлівання. Файлы сяродавішча, хранальнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць.

Асінхроннае выкананне ніколі не было прычынай таго, на чым яно чакае

Пакалькі для асінхронных процэсаў ніколі не стосуюцца таго, чакае ўніх, таму перад змянай коду неабходна адзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння. Аператары должны магчымае перайсці на выкананне кроку з вядомага пункта контролю, не спрабоўваючы здогадвацца пра схованы стан.

Чэк-ліст для эксплуатацыі

Для чэк-ліста для эксплуатацыі таксама неабходна адзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння перад змянай коду. Аператары должны магчымае перайсці на выкананне кроку з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан.

Запісваць час выканання і вартасцы разам з функцыйнальнымі рэзултатамі. Ранняя відкрытасць інформацыі запобегае неспакоўным рахункам у спільных срэдах.

З’ясавайце, што насправды блакуе цікл аб’явленняў, а што толькі чакае. Сінхронныя выключэння ёсць класычной пасткай.

Напісце кароткі посібнік: змěнюйце канфігурацыяны ключы, спалошуйце чэргі, відкладзіце пярэднія змěны.

Зберагаюце канфігурацыю паза кодам прыкладнага програмавання. Файлы сераўніка, сховішчы секрэтных даных і пазнакі функцыйяў должны знаходзіцца ў аднам месцы, якое можна пераглядаць аператарамі.

З’ясавайце, што насправды блакуе цікл аб’явленняў, а што толькі чакае. Сінхронныя выключэння ёсць класычной пасткай.

Перад апранаванням стэка заморозьце версіі, зафіксуйце ідэальны транскрыпт для крытычнага шляху і паказваце крокі відкладзення. У спадзяльных сераўніках патрэбны ліміты частоты запытоў, пераказкі прыналежнасці і чыстае власніка для змěны секрэтных даных.

Для захіста, пункт 0: перш чым зменяць код, неабходна ясная ваказка пра вхідныя даны, адміністратара крока і крэтэрыяў завершэння. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здогадвацца пра схованы стан.

Конфігурацыю трэба зберагаць паза кодам прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое можна пераглядаць аператарамі.

Валідзіце структураваныя патэрны паралельнай працы замест абмовічных методаў, якія маскуюць адмовы.

Для захіста, пункт 1: перш чым зменяць код, неабходна ясная ваказка пра вхідныя даны, адміністратара крока і крэтэрыяў завершэння. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан.

Валідзіце маленькія, тэставаныя елементы замест велікіх скрыптаў. Калі крок адмовляецца, адмова должна вказываць на конкрэтную адпаведальнасць.

Зафіксавайце версіі падчас выканання і запісаўце хэш-выраз, які выканаў дэманстрацыю.