並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 494件

新着順 人気順

awaitの検索結果41 - 80 件 / 494件

  • Promiseに出来てasync/awaitに出来ないこと (JavaScriptを例として) - FOOBAR's Blog

    JavaScriptで非同期処理をasync/awaitを使って同期的なスタイルで書いていると、すべてのコードをそのスタイルで統一して書きたくなる。なので非同期処理を開始して実行を明け渡したいときはもちろんawaitを使うし、非同期処理に失敗したときはtry-catch構文で例外ハンドラに制御が移るようにする。ただ、同期的なスタイルで書けない処理が存在するために、どうしてもすべてを統一することはできない。Direct styleで書けないcontrolは継続渡しスタイル(CPS)を使って書くしかないからだ。 JSの場合でいうと、並行制御周りがそれにあたる。Promise.all() や Promise.race() などは対応する構文がJS側に存在しない。 例えば Promise.all() に対応する awaitall みたいな構文が言語側に欲しくなる。こんなふうに: const [x,

      Promiseに出来てasync/awaitに出来ないこと (JavaScriptを例として) - FOOBAR's Blog
    • ES2017 async/await + Promise で解決できる事、とES2015(ES6) generators (yield) + Promise + npm aa (async-await) で解決できる事 - Qiita

      ES2017 async/await と Promise を使うと非同期処理をすごく簡単に処理できる。 とても便利なのだが、それだけでは、どうも機能が足りない様に見える。 この記事は... TL;DR ES2017 async/await を使っても、まだいろいろと課題は残ってるよ。 ES2015 (ES6) generators と npm aa (async-await) だと、より良い解決策があるよ。って話。 以下の図の様な非同期処理フローを考えてみる。 横軸は時間だ。左から右へ時間が流れていくものと考えて欲しい。 縦線は複数の処理を同期させたい、という意味だ。 ES2017 async/await 版のコード例を見てみよう。 'use strict'; //require('babel-polyfill'); // おまじない //require('regenerator').ru

        ES2017 async/await + Promise で解決できる事、とES2015(ES6) generators (yield) + Promise + npm aa (async-await) で解決できる事 - Qiita
      • Rustのasync/awaitをスムーズに使うためのテクニック - Qiita

        RustのFutureとasync/awaitは、「時間のかかる処理」をするときに、「処理が終わるまでOSスレッドをブロックする(同期Rust)」のではなく、「当該処理を中断して、そのOSスレッドを別のタスクの処理に使う(非同期Rust)」ことで、スレッド数よりも多くの処理を同時に行う仕組みです。 同期Rustと非同期Rustには以下のようなアナロジーが成立します。 同期Rust 非同期Rust

          Rustのasync/awaitをスムーズに使うためのテクニック - Qiita
        • Python3.5で実装されたasync/awaitを使って軽量スレッドの性能ベンチマーク - Qiita

          Python3.5でasync/awaitが追加されていたのでメモリ消費量とコンテキストスイッチのコストの観点でベンチマークを取ってみました。 async/await構文とは 非同期処理やノンブロッキングI/O処理を良い感じに書ける非同期処理のパラダイムにおける最先鋭の構文です。C#に実装されたあと、C++,VB,Node.jsに実装されついにPythonにもやってきた!という感じです。特徴はいままでThreadingで頑張って書いてた非同期処理が、より簡潔により強力に書けるようになります。軽量スレッドとはマイクロスレッド、ファイバーとも呼ばれるもので、「C10K問題」(クライアント1万台問題)と言われるI/O待ちによってクライアント数が多いとハードウェアの性能が生かしきれない問題の解決策の1つです。I/O待ちの際に高速にコンテキストスイッチして他のクライアントを捌くことでハードウェアの性

            Python3.5で実装されたasync/awaitを使って軽量スレッドの性能ベンチマーク - Qiita
          • Rustのasync/awaitとスケジューラの話 / rust-async-await

            Effectで作る堅牢でスケーラブルなAPIゲートウェイ / Robust and Scalable API Gateway Built on Effect

              Rustのasync/awaitとスケジューラの話 / rust-async-await
            • JavaScript の async/await の仕様をずっと誤解していた

              すごい初歩的なことかもしれないのだけれど、年単位ぐらいで誤解したままコードを書いていたので懺悔のためにも書いておく...。 何が違ったかというと、async function の扱いである。async function も function と同じだとおもっていて、 Promise を返さないと呼び出し側で await できないと勘違いしていた。そのため、今までは

                JavaScript の async/await の仕様をずっと誤解していた
              • WinRT の async/await コーディングがおもしろい(のでJavaScriptで真似してみた) - てっく煮ブログ

                Windows 8 開発者プレビューでの開発を試していたところ、非同期プログラミングを簡単に書ける await キーワードが面白かったので紹介します。Windows 8 用に Metro アプリを開発する場合、WinRT(Windows Runtime)というフレームワークを使ってプログラミングします。WinRT では、UI 応答速度を上げるための工夫として、少しでも時間がかかる可能性のある処理は、非同期の API のみが提供されています。なんかめんどくさそうですよね。いえいえ、そんなことはありません。.NET 5 から導入される async/await キーワードでとても簡単に書けてしまいます。HelloWorld アプリケーションのサンプルたとえば、HelloWorld アプリケーションでは次のようなサンプルが紹介されています。 // UI を表示するページのコンストラクタ // UI

                • リアルタイム通信におけるC# - async-awaitによるサーバーサイドゲームループ - Grani Engineering Blog

                  CTOの河合(@neuecc)です。Game Tech Session ~AWS Summit Tokyo 2017~にて「『黒騎士と白の魔王』の gRPC による HTTP/2 API/ストリーミング通信の実践」と題して登壇しました。参加いただいたみなさま、ありがとうございます。 4 月にリリースした「黒騎士と白の魔王」では、iOS/Android のモバイルアプリケーションからの全ての通信を gRPC による HTTP/2 で行っています。API リクエストからストリーミングまで、gRPC のあらゆる機能を使って実現した「黒騎士と白の魔王」のアーキテクチャについて、AWS 上でのスケーリングやデプロイを考慮した構成も含めてご紹介します。 「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践 from Yoshifumi Kawai 5/10にUnite

                    リアルタイム通信におけるC# - async-awaitによるサーバーサイドゲームループ - Grani Engineering Blog
                  • ⭐️🎀 JavaScript Visualized: Promises & Async/Await

                    If you're already somewhat familiar with promises, here are some shortcuts to save you some precious scrolling time. Introduction When writing JavaScript, we often have to deal with tasks that rely on other tasks! Let's say that we want to get an image, compress it, apply a filter, and save it 📸 The very first thing we need to do, is get the image that we want to edit. A getImage function can tak

                      ⭐️🎀 JavaScript Visualized: Promises & Async/Await
                    • async await の使い方 - Qiita

                      これからはasync,awaitが読み書きできないと生きていけなそうだったので調べてみました。 ※コード例は一応TypeScriptですが、ほとんどJavaScriptです。 参考: async function - JavaScript | MDN

                        async await の使い方 - Qiita
                      • ES7 async/await でのエラーハンドリング - おなか周りの脂肪がやばい

                        async/await は ES7 の機能で、非同期処理を記述する上で非常に便利な機能である(仕様は安定していないと思う) まだ実装している処理系はないと思うが、babel などの transpiler をつかうと利用できる async/await をつかうと非同期処理を以下のように書くことができる function a() { return new Promise(function(resolve, reject) { setTimeout(function() { resolve('hello, ') }, 0) }) } async function b() { var value = await a() return value + 'world' } async function c() { var value = await b() console.log(value) ret

                          ES7 async/await でのエラーハンドリング - おなか周りの脂肪がやばい
                        • async/awaitで非同期処理はシンプルになる - Qiita

                          javascriptで非同期処理を書こうとした時、普通に処理を書くと上から書いた通りの実行順序では完了しません。非同期処理の部分が、往々にして遅延して処理が完了してしまうからです。 非同期処理として有名なものには ajax や setTimeout、XHR(XMLHttpRequest) が存在します。 コマンドライン上で実行する簡単な例を書くと $ node > console.log('hello'); console.log('world'); hello world undefined > setTimeout(() => console.log('hello'), 500); console.log('world'); world undefined > hello 普通に連続で書くとhello と world が順序通り表示されますが、setTimeoutを使った方は順序が逆に

                            async/awaitで非同期処理はシンプルになる - Qiita
                          • ES async/awaitを全力で使ってみて発見したイディオム - Qiita

                            // 注意: 最初のバージョン、async function がundefinedを返すと思い込んでて、色々間違えてた 手元の趣味コード(諸事情により未公開)に向けて全力で適用してみた結果学びがあった。以下babel。 事前に確認 async/await は Promise と Generator の糖衣構文である await は Promiseのインスタンスの式を与えると(見た目上)停止する await するには async functionで囲う必要がある async function は必ず非同期で実行され undefinedPromise を返す 以下イディオム とりあえず実行したい (async () => { await new Promise(done => { setTimeout(1000, done); }) })(); 解説: async ブロック作ってからの即時実行

                              ES async/awaitを全力で使ってみて発見したイディオム - Qiita
                            • 【C#】非同期処理とasync/await - Annulus Games

                              今回の記事はasync/awaitについて。 C#に限らず、現在では多くのプログラミング言語が非同期処理を扱う言語機能としてasync/awaitを採用しています。現在の.NETでも至る所にasync/awaitが使われており、避けて通ることはできない重要な機能となっています。 そこで今回は、C#における非同期処理とasync/await、またC#8.0で導入された非同期ストリームとIAsyncEnumerable<T>について、基本的な使い方を解説していきます。 また、記事の後半では実際にasync/awaitがどのように動作しているかをコンパイル結果を通して説明していきます。この辺りはやや高度なトピックになるため読み飛ばしていただいても構いませんが、async/awaitをより深く理解したい方は是非そちらも読んでみてください。 同期処理 / 非同期処理 async/awaitに関する話

                                【C#】非同期処理とasync/await - Annulus Games
                              • Promiseとはなんぞや?!できるだけわかりやすく説明してみた(ついでにasync/awaitも) - Qiita

                                PromiseやAsync/awaitという言葉をよく耳にするようになってきましたが、どういう仕組みか理解せず苦しんでいる方も多いのではないでしょうか? 実は自分もこの記事書くまではかなり苦戦していました…! そこで、できるだけ、本当にできるだけわかりやすく説明するために、いろんなケースを交えて説明していこうと思います! そもそもどういうときにPromiseって必要になるんや? まず以下のコードをご覧ください function getData () { return axios.get('http://example.com') .then((res) => { return res; }) } let data = {}; if (data) { data = getData (); } console.log(data); 上記のコードを実行すると、コンソールに帰ってくるのはexamp

                                  Promiseとはなんぞや?!できるだけわかりやすく説明してみた(ついでにasync/awaitも) - Qiita
                                • async await に書き換えて、Promiseと 同期による例外の区別でハマった - Qiita

                                  // async function の中 try { load().then(data => { console.log(data) }).catch(e => { // ... }) } catch (e) { // ... 例外処理 } わかりやすく簡単にしている。実際にはもっと複雑なコードだった。Promise にすれば try と catch を一本化して綺麗にできるやん!と思っていた。最初は。 書き換えた // async function の中 try { const data = await load() console.log(data) } catch (e) { // ... 例外処理 } catch が一個減ってリファクタできたーと思っていた。確かに異なる例外処理のブロックが減ってしまっていたが、どうせ何かしらのデッドコードだろと思って消してしまった。 注: 意味的に

                                    async await に書き換えて、Promiseと 同期による例外の区別でハマった - Qiita
                                  • Rustのasync/awaitの特徴4つ - Qiita

                                    async/awaitの最小限の機能が、 Rust 1.38.0 リリースを目標に準備されています。Rust1.36.0のリリースが2019-07-04で、Rustは6週間ごとにリリースされるので、順調にいけば 2019-09-26 頃にリリースされると思われます。もちろんnightlyではすでに試せます。 さてこのasync/awaitですが、他の言語のasync/awaitと基本コンセプトは近いものの、いくつか異なる点があります。個人的には以下のことを把握しておくとよいと思いました。 後置await構文 戻り値型 (内部戻り値型・実装ごとに異なる型) 駆動 (awaitまたはspawnしないと進まない) キャンセル (awaitポイントは中止ポイント) 本稿は現象の説明にとどめ、そうなっている理由には基本的に言及しませんが、どれもきちんと理由があってそうなっています。その点はご承知おき

                                      Rustのasync/awaitの特徴4つ - Qiita
                                    • おーい磯野〜 callback使ってる関数をPromiseでラップしてasync/awaitで書こうぜ〜 - taiki-t's diary

                                      例1 const sleep = (ms) => { return new Promise(resolve => setTimeout(resolve, ms)); } const something = async () => { await sleep(100) doSomething() } 例2 Geolocation.getCurrentPosition() - Web API インターフェイス | MDN から // 元メソッドの構文は // navigator.geolocation.getCurrentPosition(success, error, options) // クラスの中 getCurrentPosition(options) { return new Promise((resolve, reject) => { navigator.geolocation.g

                                        おーい磯野〜 callback使ってる関数をPromiseでラップしてasync/awaitで書こうぜ〜 - taiki-t's diary
                                      • ES7 の Async/Await を使ってみた - Qiita

                                        Taming the asynchronous beast with ES7 babel の experimental に ES7 の Async/Await が入ったというので、さっそく導入してみた。対象は画像を点字を変換するわりかしどうでも良いモジュール。 seurat - JavaScript utility to generate a braille text from an image 導入前 ファイル読み込みや画像の変換に非同期処理を多用しており、node.js スタイルの 非同期API(コールバックを渡すやつ) を prominence というユーティリティ関数で Promise 化していたが、行ごとに then が出てきたり、複数の値を渡すために Promise.all を使ったりと、あまり読みやすいとは言えないコードだった。(コールバック地獄になるよりはマシだと思うけど.

                                          ES7 の Async/Await を使ってみた - Qiita
                                        • Why choose async/await over threads?

                                          A common refrain is that threads can do everything that async/await can, but simpler. So why would anyone choose async/await? This is a common question that I’ve seen a lot in the Rust community. Frankly, I completely understand where it’s coming from. Rust is a low-level language that doesn’t hide the complexity of coroutines from you. This is in opposition to languages like Go, where async happe

                                            Why choose async/await over threads?
                                          • Async/Await - 非同期プログラミングのベスト プラクティス

                                            async void を避ける 使用できる戻り値の型には、Task、Task<T>、および void の 3 つがありますが、async メソッドで自然な戻り値の型は Task と Task<T> だけです。同期コードから非同期コードに変換する際、型 T を返すメソッドはすべて Task<T> を返す async メソッドになり、void を返すメソッドはすべて Task を返す async メソッドになります。次のコード スニペットは、void を返す同期メソッドとそれに相当する非同期メソッドを示しています。 void MyMethod() { // Do synchronous work. Thread.Sleep(1000); } async Task MyMethodAsync() { // Do asynchronous work. await Task.Delay(1000);

                                              Async/Await - 非同期プログラミングのベスト プラクティス
                                            • できる!C#で非同期処理(Taskとasync-await)

                                              ヤヴァいタイトル付けてしまった…. ええと、これはAdvent Calendarではありませんが、勢いで書いています(C# ADは既に埋まっていた…) それには、こんな事情があったのです: 「.NET非同期処理(async-await)を制御する、様々な方法」の記事がコンスタントにPVを稼いでいる (その割に、他の非同期関連の記事は読まれない)。 asyncやawaitキーワードの使い方を度々聞かれる。 Task.Wait()とか、Task.Resultとか使ってるコードを頻繁に見る(不要なのに! しかも、この記事を参照しながら全部Wait()とかResultしているブログ記事… そしてそこから流入するPV… 死んじゃう、死んじゃうよ…)。 Task.Run()とか、Task.Factory.StartNew()とか、Task.Start()とか、Task.ContinueWith()を使

                                                できる!C#で非同期処理(Taskとasync-await)
                                              • [JavaScript]イベントにもasync/awaitを使おう - TES Blog

                                                はじめに ECMAScriptが2015年から毎年バージョンアップするようになり、JavaScriptの仕様は大きく変わりました。 特に非同期処理まわりは、Promise(ECMAScript2015~)、async/await(ECMAScript2017~)が導入されたことで、 コールバック地獄の回避や可読性の向上などを実現できるようになりました。 また、JavaScriptではクリックやマウスホバーなどのイベントを検知する機能があります。 通常、イベント登録時に、イベント発火時に実行される処理をコールバックとして渡します。 実は、この従来の書き方をasync/awaitに置き換えると、一見すると同期処理的に書けるようにできます。 本記事では、以下の例のように、async/awaitへ置き換える話を説明します。 // いままでの書き方 const target = document.q

                                                  [JavaScript]イベントにもasync/awaitを使おう - TES Blog
                                                • Kotlin 1.1 async/awaitの仕組みと使い方の概要 for Android - visible true

                                                  これはKotlin Advent Calendar2016の19日目のエントリです。 本エントリではKotlinの次期バージョン(1.1)で導入されるコルーチンと、その実装のひとつであるasync/awaitについて解説します。 今回書いているコードはGitHub - sys1yagi/kotlin-async-await-sample: yey!に置いています。 Kotlin 1.1の様子 Kotin 1.1は2016年7月にFirst glimpse of Kotlin 1.1: Coroutines, Type aliases and moreで変更の概要とEAPが公開されました。コルーチンのほかにタイプエイリアスやメソッド参照、ラムダ式での引数の分解宣言などなど様々な便利な機能の追加が予定されています。2016年12月の時点で1.1-M03が公開されています。 Kotlin 1.1

                                                    Kotlin 1.1 async/awaitの仕組みと使い方の概要 for Android - visible true
                                                  • 第2章 ブラウザ操作自動化の基本 ~非同期処理を扱うasync/await関数、自動化の鍵を握るPuppeteerコンポーネント | gihyo.jp

                                                    [速習] Puppeteer ~ヘッドレスChromeでテスト&スクレイピング 第2章ブラウザ操作自動化の基本 ~非同期処理を扱うasync/await関数、自動化の鍵を握るPuppeteerコンポーネント 第2章では、実際にヘッドレスChromeを自動化するうえで必要となる、最新のJavaScriptの構文やPuppeteerのAPIについて解説します。 進化し続けるJavaScript PuppeteerのAPIを解説する前に、第1章の冒頭で掲載したサンプルコードを見返してみましょう。もしかすると、中にはまったく見慣れない構文が見つかったかもしれません。 const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await b

                                                      第2章 ブラウザ操作自動化の基本 ~非同期処理を扱うasync/await関数、自動化の鍵を握るPuppeteerコンポーネント | gihyo.jp
                                                    • neue cc - UniTask - Unity + async/awaitの完全でハイパフォーマンスな統合

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

                                                      • ラーメンで理解するasync/await - Qiita

                                                        JavaScript 2 Advent Calendar 2019 の19日目の記事です。 (19/12/23 10:41追記) Promise.allについて最後に追記しました。 対象 async/awaitがなんだかはある程度知ってる人 async/awaitをなんとなくで使ってる人 そもそもasync/awaitって? async/awaitは、Promiseによる非同期処理をより簡潔に効率よく記述できる手法。 普通にPromiseを使うとネストが深くて辛くなるのを救ってくれる。 「async/await Promise」で検索すれば比較についてはたくさん出るので今回は書かない。 便利だから全部async/awaitにしちゃおう! って思うんですけど、実は罠があって。 ちゃんと気をつけないと非効率な感じになっちゃうよっていうのが今回のお話。 ただ、コードを並べて説明してもよくわからな

                                                          ラーメンで理解するasync/await - Qiita
                                                        • プロダクションのRustコードを async / await に移行した話

                                                          κeenです。日本時間の 11/8 日に Rust 1.39.0 が リリースされ、Rustでもいよいよ async / await が利用できるようになりました。 async / await は面倒な Future の記述をすっきり書けるようにするシンタックスシュガーであると共に、 Future をまたいだ値のライフタイムもよしなに扱ってくれるので視認性以上のメリットがあります。 可能な限り使った方が良いでしょう。 Ideinのプロダクションコードもすぐさま async / await に移行しました。 IdeinのActcastのプロジェクトにはいくつかRustのコードベースがありますが、そのうちのAPIサーバの部分を async / await に移行しました。元々非同期なWAFを使っていたこともあり、ほとんどのコードで Future を使っています。規模としてはRustだけで23パ

                                                            プロダクションのRustコードを async / await に移行した話
                                                          • async/await ~非同期なライブラリは楽じゃない~ - 飽きっぽい人のブログ

                                                            ※個人的な備忘録的なものです。 こっちとかこっちのが良くまとめられています。 ライブラリ制作者向けの内容になっているのでアプリ製作者にはあまり関係がないかもしれません なお、サンプルコードは全てWindowsストアアプリとして実行したものとします デッドロックで泣きを見ないように 下のようなライブラリのコードがあるとします gist11215254 このライブラリのDoAsyncは呼び出され方によってはデッドロックされてしまいます 下のコードがその例になります gist11215568 原因はTaskのWaitメソッドでロックしたスレッドに対して、HeavyWorkAsyncメソッドでワーカースレッドで作業していたTaskが元のUIスレッドに戻ろうとしたためです 図にすると以下のようになります Waitするなと思った方がいらっしゃるかもしれませんが、使用するのは自分ではなく他人のアプリ製作

                                                              async/await ~非同期なライブラリは楽じゃない~ - 飽きっぽい人のブログ
                                                            • Python 3.5、async/await非同期プログラミングをサポート予定

                                                              12のソフトウェア・アーキテクチャの落とし穴とその避け方 成功するソフトウェアアーキテクチャを開発するのはシンプルだが、簡単ではない。QARを理解し、QARを最大限に満たすトレードオフを理解し、実行するには、洞察力と経験が必要であり、その多くはアーキテクチャ自体の実験を繰り返すことで集めなければならない。プロセス自体は単純だが、考慮すべきトレードオフはしばしば難しく、簡単な答えはめったにない。

                                                                Python 3.5、async/await非同期プログラミングをサポート予定
                                                              • Asynchronous Programming with Async and Await (C# and Visual Basic)

                                                                This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

                                                                  Asynchronous Programming with Async and Await (C# and Visual Basic)
                                                                • NTTコミュニケーションズでインターンシップをしてきました!! - await wakeUp();

                                                                  はじめに 9月4日から18日の2週間、NTTコミュニケーションズでインターンシップをさせていただきました。この記事では、インターンシップの体験記として、どのようなことをしたのか、職場の環境はどんな感じなのかを紹介したいと思います。 概要 今回私は、NTTコミュニケーションズ技術開発部 WebCoreチームでWebRTCプラットフォームSkyWayの開発・運用に関する仕事をしました。勤務先は浜松町にあるLAB(Lean Agile Base)でした。NTTコミュニケーションズのオフィスは、他に大手町や田町にもあります。 developer.ntt.com インターンのきっかけ SkyWayチームでインターンシップとかあったりするんだろうか… WebRTCガッツリできるインターンシップって見たことないかも…— sublimer (@lz650sss) 2019年5月15日 「できたら嬉しいな」

                                                                    NTTコミュニケーションズでインターンシップをしてきました!! - await wakeUp();
                                                                  • UniTask - Unityでasync/awaitを最高のパフォーマンスで実現するライブラリ

                                                                    Cy#の河合です。今回、『UniTask』という新しいUnity用の非同期処理ライブラリを公開しました。 [GitHub – Cysharp/UniTask] 新規公開、ではありますが、実は新しいわけではなく、元々UniRxの機能として公開していたものを、分離したものとなります。併せてUniRxも更新していて、お互いに依存が一切ない独立したものになっています。 概要に関しては、以前に公開した以下のスライドで詳しく述べていますが、改めてまとめてみます。 async/awaitまでのC#/Unityの非同期処理 一般に、非同期処理はコールバックで完了後のメソッドを呼び出す形で実装できます。Unityも例外ではなく多用されていますが、 複雑な処理でネストが多重になる その際、内側の例外は外側には伝搬されない 処理順序がコードから見えなくなる といったような、いわゆるコールバック地獄に陥ります。代

                                                                      UniTask - Unityでasync/awaitを最高のパフォーマンスで実現するライブラリ
                                                                    • neue cc - C#のasync/await再考, タイムアウト処理のベストプラクティス, UniTask v2.2.0

                                                                      お題を3つ並べましたが、記事は逆順で書いていきます!というわけで、UniTask v2.2.0を出しました。改めてUniTask v2とはUnityのためのゼロアロケーションasync/awaitと非同期LINQを実現するライブラリで、とv2リリース時の解説記事を貼っつけましたが、ちょいちょい細かい改善を続けてまして、今回v2.2.0になります。 PlayerLoopへのループ挿入のカスタマイズ対応 現状のUnityはPlayerLoop上で動いていて、Unity 2020.1のリストをここに置いておきましたが、デフォルトでは120個ぐらいのループがエンジンから駆動されています。UpdateループだけでもScriptRunBehaviourUpdate, ScriptRunDelayedDynamicFrameRate, ScriptRunDelayedTasks, DirectorUpd

                                                                      • UniTask v2 - Unityのためのゼロアロケーションasync/awaitと非同期LINQ

                                                                        Cy#の河合です。去年、UniTask – Unityでasync/awaitを最高のパフォーマンスで実現するライブラリという形で紹介させていただきましたが、今回全てのコードを書き換えた新バージョンをリリースしました。 GitHub – Cysharp/UniTask UniTask v2では、コードの徹底的な書き換えにより、ほぼ全てがゼロアロケーション化しました(技術的詳細は後ほど述べます)。これによりパフォーマンスの大幅な向上を果たしているほか、新たに非同期シーケンスと、それに対応する非同期LINQが組み込まれました。その他、DOTweenやAddressableなどの外部アセットに対するawait標準対応も組み込まれ、より利便性が高まっています。 v2の前に、まず、async/await はC# 5.0から搭載されている機能で、従来コールバックの連鎖やコルーチンで処理していた非同期コ

                                                                          UniTask v2 - Unityのためのゼロアロケーションasync/awaitと非同期LINQ
                                                                        • async/awaitは今後もベストフレンドであり続けるか - hadashiA

                                                                          えーあーー みなさん聞こえますでしょうか。この記事はC# アドベントカレンダー17日めのために書かれました。 いくつかみかけた、async/await と java loom/goroutine的なものを比較する議論に興味があり、少し追ってみた感想です。実装まで深く調べられてません。 TL;DR Green Thread Experiment Results #2398 .NET の runtimelabにて、async/awaitの代替としてのグリーンスレッドを検証した結果が公開されていたが、今後も async/await でいくという結論になっている。 JVM (Java) は対象的に、コードの書き方をなにも変えなくてもランタイムが自動的にI/Oを非同期にしてくれる夢のVirtual Thread を導入した。 Rust界隈では「Why async/await ? why? why?

                                                                            async/awaitは今後もベストフレンドであり続けるか - hadashiA
                                                                          • 【初心者向け】JavaScriptの非同期処理を理解する callback、Promiseそしてasync/awaitへ - Qiita

                                                                            【初心者向け】JavaScriptの非同期処理を理解する callback、Promiseそしてasync/awaitへJavaScriptNode.js初心者向け 非同期処理は最近のフロントエンド開発において、もはや必須ともいえるようになってきました。 WebAPIに対して問い合わせる際や、ファイルを読み込む処理などJavaScriptではいたるところで非同期処理を実装する機会があります。非同期処理にすることでパフォーマンスを向上するようにNode.jsが設計されていることもあるのですが、同期的な処理を得意とする言語ばかり書いてきた人からするとどうしてもJavaScriptの非同期処理は受け入れづらいところがあるようです。 今回はJavaScriptの非同期処理として実装される3パターンを理解してみましょう。 コールバックによる実装とその地獄 コールバック地獄を解決するPromiseによ

                                                                              【初心者向け】JavaScriptの非同期処理を理解する callback、Promiseそしてasync/awaitへ - Qiita
                                                                            • async/await,disposableを使って素直で読みやすいコードを書く | Unity Learning Materials

                                                                              async/await、聞いたことはあるけどなんだか難しそう。と思って使ってなかったりしませんか? これに対する自分の答えは、「難しい使い方で使うと難しい。」 逆に言えば、簡単な使いみちで使う分にはめっちゃ簡単なんですよ。 なので早速今から簡単な使い方を紹介していきます。 どこで使えるか ズバリ、「状態の制御」。 ゲームを作る上では必須ですが、状態を扱うサンプルコードって意外と少ないんですよね。 状態というのは例えば、「タイトル画面」「インゲーム画面」「リザルト画面」みたいな画面だとか、 RPGなら「マップを歩いている」「村人と会話している」など。 後は「ロード中」なんかも状態と言えますね。 このスライドにおける素直で読みやすいコードとは 色んな思想があるとは思いますが、このスライドにおいて自分が考えている素直で読みやすいコードとは、 「同じ抽象レベルの状態の制御が同じ場所で行われている」

                                                                                async/await,disposableを使って素直で読みやすいコードを書く | Unity Learning Materials
                                                                              • Top-level await · V8

                                                                                Top-level await enables developers to use the await keyword outside of async functions. It acts like a big async function causing other modules who import them to wait before they start evaluating their body. The old behavior #When async/await was first introduced, attempting to use an await outside of an async function resulted in a SyntaxError. Many developers utilized immediately-invoked async

                                                                                • 【C#】async/awaitのキャンセル処理まとめ - Qiita

                                                                                  はじめに C#におけるasync/awaitを使う上で、絶対に意識しないといけないものは「キャンセル処理」です。 正しく処理をキャンセルしないとメモリリークを起こしたり、デッドロックやデータ不整合を引き起こす可能性があります。 今回はこの「async/awaitにおけるキャンセル処理」について話します。 対象 C#におけるasync/await全般 Task/ValueTask/UniTaskすべてに共通します Unity含む C#のasyc/awaitについてイマイチ自信が持ててない人 先に「結論」 asyncメソッドはCancellationTokenを引数に取るべき await対象が引数にCancellationTokenを要求する場合は省略せずに渡すべき OperationCanceledExceptionの取り扱いを意識するべき 解説 そもそも「キャンセル」とは何を指すのか そも

                                                                                    【C#】async/awaitのキャンセル処理まとめ - Qiita