タグ

非同期処理に関するlocke-009のブックマーク (25)

  • JavaScript で then を使うのは避けよう(await / async の初級者まとめ)

    JavaScript において、特に苦手とする人が多い印象のある Promise ですが、await と async の文法が導入されたことで、Promise の仕様を深く理解しなくても非同期処理を自然に書けるようになってきたのではないかと思います。 極論ですが、JavaScript の非同期処理は async await new Promise のみで、(ほぼ)全て表現可能です。特別な理由がない限り then を使わないようにしましょう、ということを周知するのがこの記事の目的です。 なお記事では Promise の rejected の状態についてほとんど解説しておりません。基を理解したら、別記事でぜひ学んでみてください。 Promise とは? Promise は、少し乱暴に説明すると「実行が終わっていないかもしれない何らかの関数」を包んだオブジェクトです。 普通の関数とは違って、

  • await sleep.js【async 1行JavaScript】コピペ可 - Qiita

    const sleep = s => new Promise(resolve => setTimeout(resolve, 1000 * s)) // 1秒待つ await sleep(1) // 5秒待つ await sleep(5) // 500ミリ秒待つ await sleep(.5)

    await sleep.js【async 1行JavaScript】コピペ可 - Qiita
  • JavaScriptを使った非同期通信について - Qiita

    はじめに こちらの記事ではWEB開発における非同期通信について理解しやすいように手を動かして作れるアプリを作りました。 非同期通信について学んでみたい人はぜひ作ってみてください。 対象者 非同期通信とはなにかわからない、または名前だけ知っている、漠然としたイメージだけあるといった方 WEB開発に関する知識はある程度持っている方 非同期通信とは 非同期通信とは通信技術の一つで送信者のデータ送信タイミングと受信者のデータ受信タイミングを合わせずに通信を行う通信方式です。 イメージが湧きにくいと思うので以下の画像を見てください。 この処理ではボタンをクリックした後、画面遷移を行わずにデータベースへアクセスしランダムなポケモン情報を画面に表示しています。 非同期通信では処理は以下のように行われています。 送信ボタンをクリックするとJavaScriptにてhttpリクエストが送信され、サーバーサイド

    JavaScriptを使った非同期通信について - Qiita
  • C#非同期メソッドを指定したスレッド上で動かす - Qiita

    内容 C#の非同期メソッドが実行されるスレッドはThreadPoolクラスが生成したワーカースレッドですが、これを指定したスレッドに切り替える方法を紹介します。 スレッド切り替えの様子 非同期メソッド中でSwitchToメソッドを呼び出すことでそれ以降の動作スレッドを切り替えます。 切り替えの様子: async Task SwitchToTestAsync() { Console.WriteLine(".NET ThreadPoolクラスのワーカースレッドまたは起動元スレッド上"); await mainThreadQueue.SwitchTo(); Console.WriteLine("メインスレッド上"); await userThreadPool.SwitchTo(); Console.WriteLine("自前スレッドプールのワーカースレッド上"); await Task.Yiel

    C#非同期メソッドを指定したスレッド上で動かす - Qiita
  • 各言語の非同期処理の仕組みまとめ - Qiita

    はじめに 非同期処理はアプリケーション開発においてほぼ必須となっていますが、プログラミング言語やライブラリによってその実現方法は大きく異なります。 この記事では、以下の言語における非同期処理の実現方法を調査し、分類した結果をまとめたものです。 JavaScript/TypeScript(Promise) Kotlin(Coroutines) Java(Reactor Core/Completable Future) Python(asyncio) Golang(goroutine/conc) Haskell(async) Rust(tokio) 非同期処理の分類 構文 async/await 採用している言語: JavaScript/TypeScript/Python/Kotlin/Haskell/Rust もっとも代表的な非同期処理の構文です。 asyncとawaitという対になる二つの

    各言語の非同期処理の仕組みまとめ - Qiita
  • 【TypeScript】非同期処理の良さを図解で日常生活に例えて解説する - Qiita

    「同期的処理」の部分を、公式ドキュメントや他記事では同期処理や非同期処理と混在して書いていたように感じたので、記事では「同期的処理」と名称を統一しています(個人的にはこの名称部分でかなり混乱してしまいました。。)。 今回は実装にて時間計測を用いるので、asyncを用いた「同期的処理」「非同期処理」について解説していきます。 同期的処理 // 計測 const elapsedTime = (start: number, end: number) : string => { return (end-start).toFixed(0) } // タスク消化 const doTask = (task: string, time: number) : Promise<string> => { return new Promise(resolve => { setTimeout(() => { re

    【TypeScript】非同期処理の良さを図解で日常生活に例えて解説する - Qiita
  • JavaScriptの非同期処理について - Qiita

    JavaScriptの非同期処理に関しての理解 背景 フロント開発で、よくPromise、await、then、catch、finally、asyncなどのキーワードがありますね、これらと一緒に出る単語は”同期処理”、”非同期処理”ですね。 多分Javaでの逐次処理、並列処理、並行処理と類似しているものと最初勝手にそう思いました。 実際にフロントエンドの開発を始め、この非同期処理の理解についてすごく苦労してました。(ただのプロセス上コードを一行ずつに実行するか、プロセスが複数に同時に処理することではなかったですね😭) いきなり非同期処理クイズです! まず下記のソースコードの実行順を予測してみてください! // timeandpromise.js console.log("[A] 🦖 MAINLINE: Start"); setTimeout(() => { console.log("[

    JavaScriptの非同期処理について - Qiita
  • javascriptができるのは非同期処理であって並列処理ではない - Qiita

    同期処理とは通常の実行順番通りにプログラムが実行され実行が終わるまで次の処理に移らない、というような処理方式です。 javascriptは同期処理で処理が行われます。 以下のコードを実行すると、 function sleep(n, name) { n = n * 1000 let start = Date.now(); while (Date.now() - start < n) { } console.log(name) } function A() { // 重たい処理A sleep(1, "A"); } function B() { // 重たい処理B sleep(2, "B"); } function C() { // 重たい処理C sleep(3, "C"); } function D() { A(); B(); C(); } console.log("start"); D();

    javascriptができるのは非同期処理であって並列処理ではない - Qiita
  • 非同期処理ってなんだい? - Qiita

    今回は非同期処理の方法をサロンの勉強会で理解を深めたので、そのアウトプットをしていきたいと思います。いろんな人から意見をいただけてとても勉強になりました。一人で勉強するよりも、いろんな人と話し合いながら勉強することで、楽しく学べちゃいます!もし、興味あればどうぞ! 🥋アプリ道場サロン🥋 サンプルコードはたくさんの人がスマートにまとめていらしたので、実際にどんな感じで使うのか具体的に載せていけたらなと思い長ったらしいコードを書きました。笑 間違い等があればコメントで教えていただけたら幸いです!! 流れ 非同期処理とは? キーワード completionクロージャを使った非同期処理 async/awaitを使った非同期処理 completionクロージャとasync/awaitの違いって何? まとめ 非同期処理とは? 担当直入に言うと、実行結果を後で受け取る。ということだそうです。 日

    非同期処理ってなんだい? - Qiita
  • ペペロンチーノで学ぶ非同期プログラミングによる並行処理 - Qiita

    非同期プログラミングについて、イメージだけを超速で掴むための記事を書きました。非同期プログラミングが全くわからない人、具体的には、「async await ってなに……?」「for 文で実行していくのと何が違うの……?」レベルの人を想定しています。 非同期プログラングって何? 同期的じゃないプログラミングです。同期的ということは、プログラムが上から下に順々に実行されるということです。つまり、普通のプログラムはだいたい同期的です。言い換えれば、非同期プログラミングは順番が入れ替わる(可能性)のあるプログラムです。なぜそんなことをするかについては後述します。 ペペロンチーノを作りたい あなたはペペロンチーノを作りたいとします。以下のタスクが必要です。 パスタを茹でる(5 分) ニンニクを切る(1 分) ソースを作る(4 分)、ただしニンニクを切っている必要がある 盛り付けをする(0 分)、ただ

    ペペロンチーノで学ぶ非同期プログラミングによる並行処理 - Qiita
  • 非同期処理って? - Qiita

    はじめに JavaScriptを学習中、非同期についての内容が少々ヘビーに感じたので、こちらの記事にアウトプットして理解を深めようとしている次第でございます。 非同期処理とは JavaScriptに限らず、多くのプログラミング言語で同期・非同期の概念はあります。 では同期・非同期とは? 同期とは 同期とは処理が順番に実行されることを言います。 カレーを作るときに置き換えて考えてみます。 これらの作業は順番に行うので、前の作業が終わらない限りは次の作業に取り掛かることはありません。 コンピューターの処理に置き換えると、「ある処理が完了するまで次の処理が実行されない」ということです。 非同期とは 非同期とは処理が順番に実行されるとは限らないことを言います。 カレーだけではなく、お米を炊いてサラダを作ることも考えてみましょう。 沢山の作業がありますが、カレーの具を煮込む時間やお米を炊いている時間

    非同期処理って? - Qiita
  • async/awaitにおけるエラー処理を実行の順番から整理する - Qiita

    はじめに promiseを使うとき、いつもpromiseメソッドチェーンで記載していますか? async/awaitを利用していますか? もちろん状況によって両方書くのが殆どだとは思うのですが、私はasync/awaitの方が同期的な書き方ゆえに読みやすいため、なるべくそちらで記載しています。しかしながら、エラーハンドリングが理解できていなかったため、エラーの所在を突き止めるのに苦労してしまいました。 そのため、これを機にasync/awaitにおけるエラーハンドリングについて備忘録的にまとめておきます。 この記事のまとめ; catchされるエラーはrejectのみか、throwされたエラーも含まれるか →両方catchできる async関数における処理の順序、awaitがある場合とない場合 →awaitがない場合には同期的に処理が実行され、catchできなくなる エラー処理を外側に伝播し

    async/awaitにおけるエラー処理を実行の順番から整理する - Qiita
  • 【ChatGPT】と話して学ぶ、【asyncとawait】 - Qiita

    記事を書くきっかけ 実務に入る前に、Webアプリケーション開発の基礎の勉強をさせていただいたので、その知見の共有として。特に今回はChatGPTとの対話を通して、"文量多めの読み物っぽい"記事を目指しています。箇条書きより一連の文章の方が好みの方におすすめ。 asyncとawaitについて 「非同期処理」「待機する」といったキーワードはなんとなく覚えていたものの、説明ができなかった「async」と「await」。FEだったら避けては通れないよ!と先輩社員からもお声をいただきましたざっくり言うと asyncで非同期的な処理をして、awaitでその中で待機しなければならない内容を書いている そうです。実際に使うと、asyncの中のawaitがついている部分は完了までその後の処理が止まっているのがわかります。 ではここで早速、ChatGPTに 「サンプルコードで説明して」 とお願いしてみます。

    【ChatGPT】と話して学ぶ、【asyncとawait】 - Qiita
  • JavaScriptの非同期処理の歴史 - Qiita

    はじめに JavaScriptにおいて、非同期処理の扱い・知識は欠かせないものとなっています。 この記事ではそもそも非同期処理とは何なのか、JavaScriptで非同期処理がどのような変遷を遂げてきたのかについて解説していきたいと思います。 同期処理 JavaScriptで以下のようにコードを書いた場合、各行の処理が完了するまで次の行の処理が開始されません。 変数numが初期化される前にconsole.log(num)が呼び出されることはなく、必ずnumの初期化が完了してからコンソールに出力されます。 let num = 1; console.log(num); num++; console.log(num); // => 1 // => 2 このように、書いた順番にプログラムが実行され、現在行の処理が完了してから次の行の処理に移るような処理は同期処理と言われています。 同期処理の問題点

    JavaScriptの非同期処理の歴史 - Qiita
  • 【Javascript】fetchを使って非同期サーバー処理を行い成否を検知して処理を分岐する( Response.ok プロパティ) - Qiita

    Javascript】fetchを使って非同期サーバー処理を行い成否を検知して処理を分岐する( Response.ok プロパティ)JavaScriptfetch したいこと Viewに配置されているボタンをクリックしたら、非同期でサーバー処理を行いその処理の成否でjavascript上で処理を分岐する。 背景 開発運用中のシステムに機能追加を行う場面でのお話 実装していくよ〜 まずは既存コードから探してみる 既存のコードの中にfetchを使用して今回したいことと同じことをしている箇所を発見したので、そのまま倣ってみる。 Button.onclick = () => { const url = 'xxxx.com' fetch(url, { method: 'POST', headers: {〜〜〜〜} }) .then(() => { console.log('通信成功'); // 成

    【Javascript】fetchを使って非同期サーバー処理を行い成否を検知して処理を分岐する( Response.ok プロパティ) - Qiita
  • 非同期処理を使いこなそう ! -第 2 回 非同期処理と同期処理の処理構造 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

    皆さんこんにちは。プロフェッショナルサービス部のデジタルトランスフォーメーションチームでマネージャーをしています堀場です。 さて、いきなりですが、先日、ふと、頭に思い浮かんだ単語があります。それがこちら。 「機能」「情報」「連絡」「手順」「時間」・・・ 25 年以上前に覚えた単語がふと出てきたわけで・・・・この後、何が続くかご存知でしょうか ? 答えは、「論理」「暗号」です。 これは、モジュール強度 (または凝集度) の段階を表すもので「暗号」は凝集度が低く「機能」がもっとも高いと定義されています。なぜ、思い出したのかは謎です。ちなみに、10 年前の資料ですが IPA が提供している IT 人材育成用の汎用コンテンツ の 講義ノート に簡単な解説がありましたので興味がある方は読んでみてください。 凝集度が高いほど、堅牢性、信頼性、再利用性が高く、コードの読みやすさなどの点で好ましく、凝集

    非同期処理を使いこなそう ! -第 2 回 非同期処理と同期処理の処理構造 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS
  • 【図解】1から学ぶ JavaScript の 非同期処理 - Qiita

    はじめに JavaScriptで非同期処理を書くシーンは数多くあると思います。 なのに、今までなんとなく使用してきました。これを機会にちゃんと勉強したいと思い体系化してまとめました。 それだけだとタダのメモになってしまうので、なるべく初学者の人が理解しやすいように書きました。 自分はこの記事を書くことで、JavaScriptの躓きポイントの代表格である非同期処理(Promise や async/await )についても理解が深まったのでいい内容だと思ってます。長いけど。 主に初学者の方に読んでいただけたら幸いです。 JavaScript上級者の方は。何か間違っている記載があれば是非コメントください。 同期処理と非同期処理 まずは用語の定義からです。 同期処理は、最初のコードから次のコードへと順次処理(実行)されていくことです。 対して、非同期処理とは、ある処理が終了するのを待たずに、別の処

    【図解】1から学ぶ JavaScript の 非同期処理 - Qiita
  • V8エンジンによる内部変換コードでasync/awaitの挙動を理解する

    はじめに JavaScript の「非同期処理」ってやっぱりかなり難しくないですか? 自分も色々試行錯誤しましたが、結局「完全に理解した🤓」→「やっぱり何も分からん😭」っていうループの中で泥臭く理解を深めていくしかないようです。 さて、非同期処理の制御をある程度予測できるようになるには、非同期 API を提供する環境のことやイベントループ、マイクロタスクなどの仕組みについて理解する必要があります。 そして環境に埋め込まれた JavaScript Engine のことも理解する必要があります。 今回の記事では、JavaScript Engine の1つである V8 が内部で変換するコードから async/await の挙動を理解するための解説を試みたいと思います。V8 エンジンからアプローチすることで async/await の分かりづらい挙動を掌握して非同期処理を打倒します。 今回の記

    V8エンジンによる内部変換コードでasync/awaitの挙動を理解する
  • JSの非同期処理を理解するために必要だった知識と学習ロードマップ

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

    JSの非同期処理を理解するために必要だった知識と学習ロードマップ
  • 非同期処理につまづいたあの頃の自分に送るHow-To - Qiita

    概要 「タイムリープTypeScriptTypeScript始めたてのあの頃に知っておきたかったこと〜」 8日目の記事です。 今回はあの頃の私がつまづいたPromise・async/awaitの使い方を説明して行きます! 「内容がJsやん」というご指摘があるかも知れません。 私自身が型安全な非同期処理を作る上で、押さえておきたかったポイント・基的な考え方を記事にすることで,これから触り始める方々の一助になるのではないかと考えています。 2年目の新米ですが、どうぞ暖かい目で読んでいただけますと幸いです。 Chapter1:同期処理・非同期処理 is 何? 同期処理(sync) コードを順番に処理していき、ひとつの処理が終わるまで次の処理は行いません。 非同期処理(async) コードを順番に処理していきますが、ひとつの非同期処理が終わるのを待たずに次の処理を評価します。 実際のサンプル

    非同期処理につまづいたあの頃の自分に送るHow-To - Qiita