<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Дмитрий Переверза</title><generator>teletype.in</generator><description><![CDATA[Дмитрий Переверза]]></description><image><url>https://img2.teletype.in/files/9d/59/9d595080-d572-4b7c-935c-aa668b0886c0.png</url><title>Дмитрий Переверза</title><link>https://teletype.in/@devreverza</link></image><link>https://teletype.in/@devreverza?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=devreverza</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/devreverza?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/devreverza?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sun, 26 Jul 2026 13:58:12 GMT</pubDate><lastBuildDate>Sun, 26 Jul 2026 13:58:12 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@devreverza/qeLghBRr8dU</guid><link>https://teletype.in/@devreverza/qeLghBRr8dU?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=devreverza</link><comments>https://teletype.in/@devreverza/qeLghBRr8dU?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=devreverza#comments</comments><dc:creator>devreverza</dc:creator><title>Про MessageChannel</title><pubDate>Sun, 05 Jun 2022 09:44:18 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/90/f0/90f06ba6-5e4e-4c40-856c-37b9eaea2547.png"></media:content><category>javascript</category><description><![CDATA[На днях у меня возник вопрос, а в какой момент EventLoop’а вызываются обработчики MessageChannel и я был удивлён. Первая мысль по этому поводу это, что обработчики складываются в микро таски, вперемешку с промисами, но не все так просто. ]]></description><content:encoded><![CDATA[
  <p id="zr2l">На днях у меня возник вопрос, а в какой момент EventLoop’а вызываются обработчики MessageChannel и я был удивлён. Первая мысль по этому поводу это, что обработчики складываются в микро таски, вперемешку с промисами, но не все так просто. </p>
  <p id="DUFm">Напомню как выглядит MessageChannel (<a href="https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel" target="_blank">https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel</a>)</p>
  <p id="fzge"><code>const channel = new MessageChannel();</code></p>
  <p id="Mx3d"><code>channel.port2.postMessage(undefined)</code></p>
  <p id="Pv0A"><code>channel.port1.onmessage = () =&gt; {</code></p>
  <p id="pElh"><code>console.log(‘massageChannel’);</code></p>
  <p id="PT5A"><code>};</code></p>
  <p id="TKyC">Самый частый кейс его использования это организация связи между нашим приложением и iframe, shared workers, web workers и т.д.</p>
  <p id="lWwp">Тут пример в какой момент они отрабатывают в рамках EventLoop<br /><a href="https://codepen.io/dmitriypereverza/pen/QWQaMrB" target="_blank">https://codepen.io/dmitriypereverza/pen/QWQaMrB</a></p>
  <p id="wnf7">Как видим вызовы MessageChannel вызываются после всех проминов, но до setTimeout. То есть они лежат и не в очереди тасков и не в очереди микро тасков. А где же тогда?</p>
  <p id="pF1I">А для того чтобы объяснить это обратимся к спецификации и сразу станет все понятно<br /><a href="https://html.spec.whatwg.org/multipage/web-messaging.html#:~:text=Each%20event%20loop%20has%20a%20task%20source%20called%20the%20unshipped%20port%20message%20queue" target="_blank">https://html.spec.whatwg.org/multipage/web-messaging.html#: ~: text=Each%20event%20loop%20has%20a%20task%20source%20called%20the%20unshipped%20port%20message%20queue</a>.</p>
  <p id="9vO0">Each event loop has a task source called the unshipped port message queue.</p>
  <p id="4QEA">Теперь вы знаете что есть ещё одна очередь внутри EventLoop. Можно использовать этот козырь на собесах)</p>

]]></content:encoded></item></channel></rss>