タグ

asyncに関するkaorunのブックマーク (64)

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

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

    async/awaitにおけるエラー処理を実行の順番から整理する - Qiita
  • 【C#】C# の async/await は実際にどうやって動いているか。 - ねののお庭。

    はじめに 登壇版 Taskの質 C# のイテレータ async/await Compiler Transform ExecutionContext builder.Start() の重要性 IAsyncStateMachine.MoveNext おわりに はじめに C#er は呼吸するように使っている async/await。 そんな async/await について、先日 Stephen Toub 氏 (.NET の中の人。中心人物の一人。) が How Async/Await Really Works in C# という非常に面白い記事を投稿していました。 この記事では Stephen 氏の記事をベースに、C# において async/await は実際どうやって動いてるの?というお話をしていきます。 以前に C#での非同期メソッドの分析。 という翻訳記事を書いたのですが、元になった記

    【C#】C# の async/await は実際にどうやって動いているか。 - ねののお庭。
  • neue cc - async/awaitのキャンセル処理やタイムアウトを効率的に扱うためのパターン&プラクティス

    async/awaitの鬼門の一つとして、適切なキャンセル処理が挙げられます。別に基的にはそんな難しいことではなく、CancellationTokenSourceを作る、CanellationTokenを渡す、OperationCanceledExceptionをハンドリングする。というだけの話です。けれど、Tokenに手動でコールバックをRegisterしたときとか、渡す口が空いてないものに無理やりなんとかするときとか、タイムアウトに使った場合の始末とか、ちょっと気の利いた処理をしたいような場面もあり、そうした時にどうすれば良いのか悩むこともあります。 こういうのはパターンと対応さえ覚えてしまえばいい話でもあるので、今回はAlterNatsの実装時に直面したパターンから、「外部キャンセル・タイムアウト・大元のDispose」が複合された状況での処理の記述方法と、適切な例外処理、そして最

  • V8エンジンによる内部変換コードでasync/awaitの挙動を理解する

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

    V8エンジンによる内部変換コードでasync/awaitの挙動を理解する
  • ES2016 async/await キャンセル可能な非同期関数を実装する方法 - Qiita

    stack overflow にいいやり方が載っていたので紹介します。 出典:Abort ecmascript7 async function デモを書いてみました まずはこちらを見てください。何がやりたいかがわかりやすくなっているかと思います。 jsfiddle で動きを見る:CancellationToken async/await にはキャンセル処理を実装するための仕組みがありませんが、 async/await の元ネタである .NET framework に CancellationToken 構造体 というものがあります。 これを JS に持ち込むことで、キャンセル可能な async 関数を実装することができます。 CancellationToken クラス class CancellationToken { isCancellationRequested = false; co

    ES2016 async/await キャンセル可能な非同期関数を実装する方法 - Qiita
  • GitHub - dotnet/reactive: The Reactive Extensions for .NET

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - dotnet/reactive: The Reactive Extensions for .NET
  • ConfigureAwait FAQ - .NET Blog

    No trial. No credit card required. Just your GitHub account. .NET added async/await to the languages and libraries over seven years ago. In that time, it’s caught on like wildfire, not only across the .NET ecosystem, but also being replicated in a myriad of other languages and frameworks. It’s also seen a ton of improvements in .NET, in terms of additional language constructs that utilize asynchro

    ConfigureAwait FAQ - .NET Blog
  • Deep Dive async/await in Unity with UniTask(UniRx.Async)

    UnityUIとはどういったシステムなのか、そして最適化する上で確認すべきポイントとTipsを紹介します。 --- このスライドは、「TECHxGAME COLLEGE#10 Unityでパフォーマンスの良いUIを作る為のTips」で紹介したスライドを少し手直ししたものとなります。 https://techxgamecollege.connpass.com/event/99824/

    Deep Dive async/await in Unity with UniTask(UniRx.Async)
  • neue cc - UniTask - Unity + async/awaitの完全でハイパフォーマンスな統合

    Unityでasync/await使えてハッピー。が、しかしまだ大々的に使われだしてはいないようです。理由の一つとして、Unityが標準でサポートする気が全くなさそう。少なくとも、Unityがフレームワークとしてasync/awaitには何一つ対応していない。async/awaitという道具立てだけじゃあ何もできないのです、フレームワークとして何らかのサポートがなければ機能しないわけですが、なんと、何もない……。 何もないことの理由はわからないでもないです。パフォーマンス面で不満/不安もありそうですし、マルチスレッドはC# Job System使ってくれというのは理にかなっている(私もそちらが良いと思います、つまりTaskのマルチスレッドな機能は原則使わない)。とはいえ、async/awaitは便利なので、このまま、便利だけど性能は微妙だから控えようみたいな扱い(あ、それ知ってる、LINQ

  • Unity 5.5でasync/await使えた話

    Unity 5.5 ベータを入れてみたという話。 ブログ曰く、「Mono C# コンパイラー がMono4.4にアップグレードしました。」とのことなので、これ、C# 6使えるはずよね?と。 公式サポートはC# 4 リリースノートを見ると、「C# 4です」って書かれてるわけですが。 Mono 4.4のコンパイラーを使っててC# 6使えないとかお前は何を言っているんだ… まあ、標準ライブラリの方が .NET Framework 3.5相当のままなので、Taskクラスが使えない。 なので当然、普通にやるとasync/awaitが使えない。 その状況下で「C# 6対応」とか言っちゃったら、問い合わせ押し寄せてやばいでしょうから、公式には「C# 4」と言わざるを得ないのはわかります。 要するに、コンパイラー的にC# 6に対応している状況で、langversionオプションを指定してわざと4に絞ってる

    Unity 5.5でasync/await使えた話
  • Best practices for using HttpClient on Services

    Since HttpClient was released back in 2012 it's become the recommended way of talking to the web from C#. It follows the HTTP standard very closely and has very good support for the async programming model. During my years working in Services I've seen it used a lot. Sometimes people hit the same problems. Here are some tips on the best way of using it in a service that you expect will be running

    Best practices for using HttpClient on Services
  • 開発者を苦しめる.NETのHttpClientのバグと紛らわしいドキュメント

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    開発者を苦しめる.NETのHttpClientのバグと紛らわしいドキュメント
  • AsyncとAwait : コールバック地獄を避けるための最新のやり方、そしてその未来 | POSTD

    (2016/7/7、いただいたフィードバックを元に記事を修正いたしました。) JavaScript、特にNode.jsといえば、 コールバック地獄 がよく連想されます ^(1) 。たくさんの非同期I/Oを扱うコードを書いたことがある方には、おそらく以下のようなパターンはおなじみでしょう。 export default function getLikes () { getUsers((err, users) => { if (err) return fn(err); filterUsersWithFriends((err, usersWithFriends) => { if (err) return fn(err); getUsersLikes(usersWithFriends, (err, likes) => { if (err) return fn (err); fn(null, lik

    AsyncとAwait : コールバック地獄を避けるための最新のやり方、そしてその未来 | POSTD
  • Asynchronous code gets easier with ES2016 Async Function support in Chakra and Microsoft Edge

    While we work on rounding out our ES6/ES2015 support, the Chakra team is already looking ahead to ES2016 and, especially, to Async Functions. Today, we’re excited to announce the availability of Async Functions in Microsoft Edge as an experimental feature, available to preview starting in Microsoft Edge (EdgeHTML 13.10547). http://channel9.msdn.com/Blogs/Seth-Juarez/Async-Functions-in-JavaScript-w

    Asynchronous code gets easier with ES2016 Async Function support in Chakra and Microsoft Edge
  • .NETで非同期ライブラリを正しく実装する

    アプリケーション開発者はシグネチャを見て、このルールに従っていると仮定します。例えば、ライブラリに同期メソッドがあれば、利用者側はスレッドプールを使って安全に並列化できると仮定できます。しかし、非同期であれば、スレッドを新しく生成するのは無駄で、シングルスレッドのループの中で非同期メソッドを実行するほうがいいと判断するでしょう。 このように考えると、さらに基的な原則が生まれます。 “ライブラリ内でTask.Runを使わない” スレッド、特にスレッドプールのスレッドはグローバルに共有されているリソースで、アプリケーション開発者に属しています。ライブラリの作者はTask.Runを使ったり、スレッドを作るメソッドを作成するべきではありません。どのようなタイミングでスレッドを追加するか決めるのはアプリケーション開発者の権利と責任です。 次のコードは典型的なアンチパターンです。 public st

    .NETで非同期ライブラリを正しく実装する
  • 非同期プログラミング - 非同期コードの単体テスト

    注意 このページにアクセスするには、承認が必要です。 サインインまたはディレクトリの変更を試すことができます。 このページにアクセスするには、承認が必要です。 ディレクトリの変更を試すことができます。 非同期コードの単体テスト Stephen Cleary コード サンプルのダウンロード 最近の開発では単体テストが重要視されます。プロジェクトの単体テストを行うメリットとしてよく知られているのは、バグの数が減ること、リリースまでの時間が短くなること、結び付きの強い設計にならないことなどです。どれもすばらしいメリットですが、開発者に直接関わるメリットもあります。単体テストを作成すると、コードに対する自信が深まります。テストが済んだコードへの機能追加やバグ修正が容易になります。これは、コードが変化している間も単体テストがセーフティ ネットの役割を果たすためです。 非同期コードの単体テストの作成に

    非同期プログラミング - 非同期コードの単体テスト
  • 非同期プログラミング - 非同期コードの単体テスト: テストを容易にする 3 つの解決策

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 非同期コードの単体テスト: テストを容易にする 3 つの解決策 Sven Grand コード サンプルのダウンロード ここ 10 年、非同期プログラミングがますます重要になっています。CPU ベースの並列処理や I/O ベースの同時実行に非同期処理が使用され、ほぼすべてのリソースをすぐに利用できる状態にして、少ない労力で大きな成果を生み出しています。応答性の高いクライアント アプリケーションや拡張性の高いサーバー アプリケーションがすべて現実のものになっています。 ソフトウェア開発者は、同期機能を効果的に構築するために多くの設計パターンを習得していますが、非同期ソフトウェア設計のベスト プラクティスは比較的新

    非同期プログラミング - 非同期コードの単体テスト: テストを容易にする 3 つの解決策
  • 非同期メソッド入門 - xin9le.net

    .NET Framework 4.5 / C# 5.0 から提供された非同期メソッドについての連載インデックス インデックス 非同期処理の歴史 非同期メソッドの概要 async修飾子とawait演算子 任意の記述場所 UIスレッドとの同期 戻り値 例外処理 非同期メソッドの内部実装 内部実装を覗く コンパイラ要件 Awaitableパターンの自前実装 WinRTとの相互運用 Rxとの相互運用 落ち穂拾い NET Framework 4.5以外でawaitする コンパイラ要件違反 単体テストの記述方法 機械的読み替えに注意 非同期勉強会 / Community Open Day 2012 その他の資料/動画 非同期勉強会 資料 Community Open Day 2012 資料 Three Essential Tips for Async @ITでの連載

  • 非同期プログラミング - ASP.NET の非同期/待機の概要

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 ASP.NET の非同期/待機の概要 Stephen Cleary 非同期/待機を取り上げているオンライン資料のほとんどは、クライアント アプリケーションの開発を前提としていますが、非同期をサーバーで活用できる場面はないのでしょうか。もちろん、あります。今回は、ASP.NET の非同期要求について全体的な考え方を説明します。また、非常に役立つオンラインの参考資料も紹介します。ここでは async や await の構文については触れません。構文については、初心者向けのブログ記事 (bit.ly/19IkogW、英語) や、非同期のベスト プラクティスについてのコラム (msdn.microsoft.com/m

    非同期プログラミング - ASP.NET の非同期/待機の概要
  • Async Programming - Patterns for Asynchronous MVVM Applications: Commands

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. April 2014 Volume 29 Number 4 Async Programming : Patterns for Asynchronous MVVM Applications: Commands Stephen Cleary This is the second article in a series on combining async and await with the established Model-View-ViewModel (MVVM) pattern. Last time

    Async Programming - Patterns for Asynchronous MVVM Applications: Commands