Я ОГРОМНЫЙ поклонник пробовать что-то новое.

Несколько друзей из моего родного города посетили меня в первые выходные августа, и они большие фонетики. Конечно, живя в Южной Калифорнии (Южная Калифорния, для тех, кто, возможно, не знал), есть множество ресторанов, в меню которых есть вкусные фо, но, поскольку у нас под рукой был жесткий критик фо, мы знали, что нам нужно отвезите их в известный ресторан.

Проведя небольшое исследование, мы выбрали ресторан под названием Pho 79. Когда мы сели и посмотрели их меню, я увидел, что у них есть Bún riêu. Я видел и слышал хорошие вещи об этом. Бун риу — традиционный вьетнамский суп в томатном бульоне с фаршем из пресноводного краба и жареным тофу с рисовой вермишелью.

Когда он впервые появился, он пах потрясающе. Я съел первое, что оказалось сверху, — фрикадельку из крабового фарша. После того, как я проглотил это, в мой мозг были отправлены сообщения: «Мне это понравилось?» Какой вкус я ощущал? Хочу ли я укусить его снова?

Через пару секунд, кипящих в мыслях, я автоматически понял — «да, мне это нравится!» «Вкус был соленый, томатный и сытный» и (ежу понятно) «Да, я хочу съесть еще этого».

Я углубился в помидоры после крабовых фрикаделек, и, боже мой — они тают во рту, затем последовал жареный тофу, который был мягким и мягким, и, наконец, рисовая лапша с вермишелью — это было идеально. Лучший способ. съесть булочку означало добавить креветочную пасту, так что не забывайте об этом! :)

В общем, сочетание всего в одной миске было идеальным, и я ушел с полным желудком и наслаждался вкусным ужином с друзьями. И, о да, моему другу понравилось фото, и он тоже пошел домой счастливый!

Я использую свой опыт булочек для сопоставления с тем, что происходит под капотом JavaScript.

В разных браузерах используются разные движки для запуска JavaScript. Например, Google Chrome использует движок V8. В движке V8 он состоит из двух элементов: кучи и стека. Куча заботится о выделении памяти (хранении имен переменных и т. д.), а стек заботится о содержимом выполнения.

Поскольку JS — это один поток, он имеет только один стек вызовов, что означает, что он может запускать только один код одновременно.

Стек вызовов записывает, где вы находитесь в программе — если функция выполняется, она помещается в стек. Когда мы возвращаемся из функции, она извлекается из стека.

Когда дело доходит до асинхронного запуска кода, его необходимо запускать асинхронно (с асинхронными обратными вызовами), чтобы не блокировать код, выполняемый в браузере. Мы любим неблокирующие коды. :)

Когда код запускается из стека, он попадает в веб-интерфейс, затем выбрасывается в очередь задач и, наконец, попадает в цикл обработки событий. Очередь задач берет первое задание из очереди и помещает его обратно в стек. Цикл событий должен дождаться, пока стек не очистится, прежде чем вытолкнуть первое задание из очереди задач.

Если вы хотите узнать об этом больше, Филип отлично справится с этим процессом. Ссылка указана ниже в ресурсах.

Надеюсь, вам, ребята, понравилось узнавать о том, что происходит под капотом JavaScript и что происходит у меня в желудке, когда я пробовал свою первую булочку.

Что ты пробовал сегодня?

Ресурсы:

Отличный плейлист, чтобы узнать больше о JS и о том, как отлаживать функции: https://www.youtube.com/watch?v=-G9c4CMMUKc

Узнайте больше о том, что происходит под капотом с Филипом Робертсом: https://www.youtube.com/watch?v=8aGhZQkoFbQ

Лупа Филипа Роберта: http://latentflip.com/loupe/?code=JC5vbignYnV0dG9uJywgJ2NsaWNrJywgZnVuY3Rpb24gb25DbGljaygpIHsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gdGltZXIoKSB7CiA gICAGICAgY29uc29sZS5sb2coJ1lvdSBjbGlja2VkIHRoZSBidXR0b24hJyk7ICAgIAogICAgfSwgMjAwMCk7Cn0pOwoKY29uc29sZS5sb2coIkhpISIpOwoKc2V0VGltZW91dChmdW5jdGlvbiB 0aW1lb3V0KCkgewogICAgY29uc29sZS5sb2coIkNsaWNrIHRoZSBidXR0b24hIik7Cn0sIDUwMDApOwoKY29uc29sZS5sb2coIldlbGNvbWUgdG8gbG91cGUuIik7!!!PGJ1dHRvbj5DbGljayBtZ SE8L2J1dHRvbj4%3D