タグ

JavaScriptとarticleとPromisesに関するefclのブックマーク (10)

  • JavaScript Visualized - Promise Execution

    Promises in JavaScript can seem a bit daunting at first, but understanding what's happening under the hood can make them much more approachable. In this blog post, we'll dive deep into some of the inner workings of promises and explore how they enable non-blocking asynchronous tasks in JavaScript. I'm still working on making this blog better on mobile devices, mobile browsers don't always render t

    JavaScript Visualized - Promise Execution
    efcl
    efcl 2024/03/31
    Promiseの動作を仕様的な内部動作を使ってビジュアライズしている記事。 非同期処理とMicrotask Queueについて
  • setTimeout を完璧に理解する

    setTimeout は、指定された時間以降に指定されたコードを実行する JavaScriptAPI です。ブラウザでも Node.js でも広く使われているのですが、実装はまちまちで、色々と特殊な条件も多く、挙動を完璧に理解している人は少ないと思います。この記事では、そんな setTimeout を可能な限り深堀りしてみようと思います。 先に書いておきますが、ものすごくニッチで細かい話ばかり並びます。突然私が、ただ純粋に setTimeout について調べたくなったので、その結果をまとめただけのものです。普通に開発している人には必要のない情報が多くなるでしょう。この記事は基礎から setTimeout を学ぼう、という方には全然向かないと思います。 また、JavaScript のイベントループについてある程度理解していることを前提とします。その詳しい理解には、@PADAone さん

    efcl
    efcl 2023/10/08
    Taskに追加するsetTimeout/setInterva/setImmidiate/postMessage。 MicroTaskに追加するPromise/queueMicrotask/nextTick。 setTimeoutのネストにはスロットリングが実装依存でかかることについて。
  • タスクキューとマイクロタスクキュー|イベントループとプロミスチェーンで学ぶJavaScriptの非同期処理

    タスクキューとマイクロタスクキュー|イベントループとプロミスチェーンで学ぶJavaScriptの非同期処理
    efcl
    efcl 2023/10/08
    WHATWGのTask QueueとMicro Task Queueについて。
  • nextTick vs queueMicrotask vs Promise.resolve vs setTimeout - Qiita

    はじめに 普段の開発でなかなかお目にかかることも使うことも滅多にない queueMicrotask について興味を持ったついでに、 process.nextTick や Promise, setTimeout などとの比較をしてみました。 TL;DR 下記の優先度順でキューからタスクが取り出され処理される。 nextTick queueMicrotask, Promise.resolve → Microtask setTimeout → Task (a.k.a. Macrotask) より具体的には、MicrotaskキューとTaskキューの2つのキューがあり、Microtaskキューが優先的に処理されるようになっている。 Microtaskキューが空でない限りはTaskキューの中身を実行しない構造となっており、queueMicrotask, Promise.resolve では Micr

    nextTick vs queueMicrotask vs Promise.resolve vs setTimeout - Qiita
    efcl
    efcl 2023/10/08
    microtaskのキューが空にならないと、次のtaskの処理のキューは処理されないため、`queueMicrotask` == `Promire.resolve().then`の中でmicrotaskを積むループをすると無限ループする可能性がある話
  • JSの非同期処理を理解するために必要だった知識と学習ロードマップ

    はじめに JavaScript の非同期処理を学習してみて「ある程度自信を持って理解できたと言える」状態に到達したので、その感想とまとめの学習ロードマップとその中でどのような知識が必要になるかを紹介したいと思います。 あるいは、自分が実際に学習してきた道筋に基づいているのでショートカットとして参考にしてもらったり、使えるリソースなどの情報が共有できると思います。もしくは「JavaScript 初心者が非同期処理を理解できるようになるまでの道筋」というストーリーで1つのサンプルとして見ていただけるといいかもしれません。 ChangeLog 大きな変更のみをトラッキングしています。 2022-11-16 の内容を反映させた追記・修正を追加 2022-05-21 構成を修正 「V8 エンジンから考える」の項目を追加 2022-04-30 「イベントループの共通性質」の項目を追加 「ロードマップ

    JSの非同期処理を理解するために必要だった知識と学習ロードマップ
    efcl
    efcl 2022/04/18
    JavaScriptのPromisesとPromiseJobs/Microtasks/Event Loopのキューについて
  • 'return await promise' vs 'return promise' in JavaScript

    You'll see shortly that both expressions do work. However, are there cases when these expressions behave differently? Let's find out! Before I go on, let me recommend something to you because I know that the path to becoming a professional JavaScript developer isn't easy... I recommend certificates.dev’s Official JavaScript Certification — a practical, expert-led program (created in collaboration

    'return await promise' vs 'return promise' in JavaScript
    efcl
    efcl 2021/08/23
    `return await promise`と`return promise`で動作が異なるケースについて。 `try...catch`で囲まれている場合には、`await`によってthrowされると結果が異なる
  • Promise.allSettled と Promise.any | blog.jxck.io

    Intro Promise.allSettled() と Promise.any() の仕様策定が進んでいる。 両者は近いレイヤの仕様では有るが、作業の進捗には差がある。 Promise.allSettled は Stage 4 であり、 Chrome や Safari TP には実装もされている Promise.any は Stage 2 であり、実装はまだない ここでは、これらがあると何が嬉しいのかを Promise.all(), Promise.race() の特徴を踏まえて解説する。 Promise.all()/race() Promise.all(), Promise.race() は、いずれも複数の Promise をまとめて処理する Utility Method のようなものである。 all は全ての Promise が Resolve したら Resolve し、 race

    Promise.allSettled と Promise.any | blog.jxck.io
    efcl
    efcl 2019/08/25
    ECMAScript Proposalの`Promise.allSettled`と`Promise.any`を含めたPromiseの状態に対するハンドリングについてのまとめ
  • Callback を撲滅せよ

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。言語サポート(Node.js)チームの伊藤(@koh110)です。 Node.js v10 も10月にLTSとなり async/await によるフロー制御は当たり前のように利用されるようになってきました。JavaScriptの非同期処理は async/await から覚える人も今後増えていくでしょう。今回はそんな非同期処理について、社内での事例を交えて記事を書いていこうと思います。 index Promise 化がなぜ重要なのか ユーザーに promisify をさせる落とし穴 Road to Promise まとめ Promise 化がなぜ重要なのか ちょうど3年前のアドベントカレンダーで、今後はいろいろなモジュー

    Callback を撲滅せよ
    efcl
    efcl 2019/01/21
    コールバックスタイルの非同期コードをPromiseのインターフェースに変更する際のスタイルについて。
  • Using Promise.prototype.finally in Node.js

    efcl
    efcl 2018/02/26
    `Promise#finally`についての記事。 Promiseの状態遷移や`finally`の動作について。また`finally`のハンドラでエラーが起きた際の動作について
  • await vs return vs return await

    When writing async functions, there are differences between await vs return vs return await, and picking the right one is important. Let's start with this async function: async function waitAndMaybeReject() { // Wait one second await new Promise((r) => setTimeout(r, 1000)); // Toss a coin const isHeads = Boolean(Math.round(Math.random())); if (isHeads) return 'yay'; throw Error('Boo!'); } This ret

    await vs return vs return await
    efcl
    efcl 2017/12/08
    async functionの中で`await`と`return`、`return await`の違いについてを解説した記事
  • 1