-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Update ch1.md #308
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Update ch1.md #308
Conversation
Fix some translations or descriptions in text
WalkthroughEdits to async & performance/ch1.md refine Russian phrasing, correct terminology and URLs, and restructure some warnings. Two new illustrative code examples were added: a cooperative concurrency Ajax coordination sample and a task-queue scheduling example clarifying event loop ordering. No API or declaration changes; all updates are textual/documentational. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant UI as Caller
participant A as Ajax A (http://some.url.1)
participant B as Ajax B (http://some.url.2)
participant H as Response Handler
participant R as res[ ]
UI->>A: request()
UI->>B: request()
Note over A,B: Responses may arrive in any order
A-->>H: data { url: .1, body }
H->>R: res[0] = body
B-->>H: data { url: .2, body }
H->>R: res[1] = body
Note over R: Deterministic mapping by data.url
sequenceDiagram
autonumber
participant App as App Code
participant TL as setTimeout Queue
participant SCH as schedule Queue
participant EL as Event Loop
App->>TL: setTimeout(fn, 0)
App->>SCH: schedule(task)
Note over EL: Current tick executes to completion
EL-->>TL: Dequeue timeout task (next tick)
TL-->>App: run fn()
EL-->>SCH: Dequeue scheduled task (after current cycle tasks)
SCH-->>App: run task()
Note over App: Later-queued tasks run after current-cycle queue
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Pre-merge checks (2 passed, 1 inconclusive)❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
Poem
Tip 👮 Agentic pre-merge checks are now available in preview!Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.
Please see the documentation for more information. Example: reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"
mode: "warning"
instructions: |
Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal). Please share your feedback with us on this Discord post. ✨ Finishing touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (7)
async & performance/ch1.md (7)
8-8
: Polish Russian phrasing and punctuation; fix terminology.Streamline style, fix “выше упомянутым” → “вышеупомянутым”, “с базы данных” → “из базы данных”, remove лишние запятые, и дайте естественный перевод Mind the gap.
-Практически, все нетривиальные программы (особенно, написанные на Javascript) управляют выше упомянутым промежутком, будто ожидание ввода данных пользователем, запрос информации с базы данных или файловой системы, отправка данных по сети и ожидание ответа, или выполнение повторяющихся действий в заданном интервале (анимация). Во всех этих случаях, ваша программа должна управлять своим состоянием во время этой "паузы" в ходе своего исполнения. Как говорят в Лондоне "Mind the gap!"(дословно -- "Помни о разрыве") -- надпись на платформе, предупреждающая о расстоянии между её краем и дверью поезда. +Практически все нетривиальные программы (особенно написанные на JavaScript) управляют вышеупомянутым промежутком: ожидание ввода пользователем, запрос данных из базы данных или файловой системы, отправка данных по сети и ожидание ответа, выполнение повторяющихся действий с заданным интервалом (анимация). Во всех этих случаях программа должна управлять своим состоянием во время этой «паузы» в ходе исполнения. Как говорят в Лондоне: «Mind the gap!» (дословно — «Осторожно, промежуток!») — надпись на платформе, предупреждающая о расстоянии между её краем и дверью поезда.
24-24
: Убрать лишние запятые и уточнить формулировку.Сейчас фраза читается тяжело и с ошибками пунктуации.
-Большинство, новоприбывших в JS, разработчиков, думают, что асинхронный код приостанавливается для выполнения, но это не так. +Большинство разработчиков, только начинающих работать с JS, думают, что асинхронный код «приостанавливает выполнение», но это не так.
96-96
: Уточнить терминологию “хост‑среда” и ссылку на книгу.Сейчас дублирование скобок и неестественная формулировка.
-Не существует спецификации или набора требований относительно того, как работают методы `console.*` — они официально не являются частью JavaScript, а вместо этого добавляются в JS *средой выполнения* (хост-средой) (см. заголовок *Типы и грамматика* эту серию книг). +Не существует спецификации или набора требований относительно того, как работают методы `console.*` — они официально не являются частью JavaScript, а добавляются JS хост‑средой (средой выполнения; см. книгу «Типы и грамматика» из этой серии).
134-135
: Упростить и исправить смысловые огрехи.Лишняя тавтология «с течением времени, в каждый момент времени» и сбивчивая последняя фраза.
-Но один общий «поток» (это не очень тонкая асинхронная шутка, чего бы это ни стоило) всех этих сред заключается в том, что в них есть механизм, который обрабатывает выполнение нескольких фрагментов вашей программы *с течением времени*, в каждый момент времени. Момент вызова JS-движка, называемый «циклом событий». +Общее для всех этих сред — наличие механизма, который со временем вызывает выполнение фрагментов вашей программы. Этот механизм называется «циклом событий».
222-223
: Сделать формулировку естественной для русского.Текущая версия звучит калькированно.
-В однопоточном поведении JavaScript, если `foo()` запускается до `bar()`, результатом будет то, что `a` имеет `42`, но если `bar()` запускается до `foo()`, результатом `a` будет `41`. +В однопоточном JavaScript, если `foo()` запускается раньше `bar()`, значение `a` будет `42`; если `bar()` раньше `foo()`, значение `a` будет `41`.
503-506
: Исправить MD034 (no-bare-urls) и опечатку с двойным пробелом.Замените голые URL на инлайн‑код или ссылки и уберите двойной пробел. Это устраняет предупреждения markdownlint на Line 505.
-Предположим, ожидаемое поведение состоит в том, что `res[0]` имеет результаты вызова `"http://some.url.1"`, а `res[1]` имеет результаты вызова `"http://some.url.2"`. +Предположим, ожидаемое поведение состоит в том, что `res[0]` содержит результаты вызова `http://some.url.1`, а `res[1]` — результаты вызова `http://some.url.2`.-**Примечание.** Будьте крайне осторожны с предположениями, которые вы можете делать в подобных ситуациях. Например, разработчик нередко замечает, что «http://some.url.2» «всегда» отвечает намного медленнее, чем «http://some.url.1», ... +**Примечание.** Будьте крайне осторожны с предположениями, которые вы можете делать в подобных ситуациях. Например, разработчик нередко замечает, что `http://some.url.2` «всегда» отвечает намного медленнее, чем `http://some.url.1`, ...Чтобы проверить, перезапустите markdownlint и убедитесь, что MD034 исчез.
509-523
: LGTM on race-free coordination; suggest strict equality.Пример корректно устраняет недетерминизм. Рекомендую
===
для предсказуемости сравнения строк.- if (data.url == "http://some.url.1") { + if (data.url === "http://some.url.1") { res[0] = data; } - else if (data.url == "http://some.url.2") { + else if (data.url === "http://some.url.2") { res[1] = data; }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
async & performance/ch1.md
(7 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
async & performance/ch1.md
505-505: Bare URL used
(MD034, no-bare-urls)
505-505: Bare URL used
(MD034, no-bare-urls)
Fix some translations or descriptions in text
Summary by CodeRabbit