タグ

generatorに関するkitokitokiのブックマーク (12)

  • function* 宣言 - JavaScript | MDN

    ジェネレーターは処理を抜け出したり、後から復帰したりすることができる関数です。ジェネレーターのコンテキスト(変数の値)は復帰しても保存されます。 JavaScript のジェネレーターは、特にプロミスと組み合わせることで、非同期プログラミングのための非常に強力なツールとなり、コールバック地獄や制御の逆転などのようなコールバックの問題を、完全に解決できるわけではないものの、軽減することができます。しかし、これらの問題は非同期関数を使用すると、さらにシンプルに解決することができます。 ジェネレーター関数を呼び出しても関数はすぐには実行されません。代わりにその関数のジェネレーターオブジェクトが返されます。イテレーターの next() メソッドが呼び出されると、ジェネレーター関数の処理は、イテレーターから返された値を特定する最初の yield 演算子か、ほかのジェネレーター関数に委任する yiel

    function* 宣言 - JavaScript | MDN
    kitokitoki
    kitokitoki 2018/09/25
    “引数つきでnext() を呼ぶとジェネレーター関数の実行が再開され、処理が停止していた yield 式を next() の引数で置き換えます。”
  • GitHub - michals2/generator-mnml-component

  • Coding recipe: extracting loop functionality (via callbacks and generators)

    kitokitoki
    kitokitoki 2018/07/26
    “Coding recipe: extracting loop functionality (via callbacks and generators)”
  • 実践UniversalJS 繰り返し処理の分離 - Qiita

    ブラウザAPIに依存した複雑なJSの処理から、ロジックを抽出し分離する方法を、事例を通して紹介します。 今回の事例は、繰り返し処理を伴うロジックの分離にgeneratorが有効であった例になります。 はじめに少し Universal ≠ SSR について Universal JSの興味関心は、SSR(サーバーサイドレンダリング)に限りません。 より汎用なロジックの移植可能性がテーマです。例えば markdown文字列の構文解析 deep copy テスト http client ランダムに文字列を出力 と、プラットフォームに依存しないべきロジックすべてが守備範囲になります。 しかし、Universal JSへの関心が薄い層がライブラリを作ると、 たとえばmarkdown"ファイル"の構文解析ライブラリができあがります。「ファイル」は物質世界の登場人物で、この時点でNodeJSでしか利用でき

    実践UniversalJS 繰り返し処理の分離 - Qiita
  • Typing Generators with Flow | Flow

    Flow 0.14.0 included support for generator functions. Generator functions provide a unique ability to JavaScript programs: the ability to suspend and resume execution. This kind of control paves the way for async/await, an upcoming feature already supported by Flow. So much wonderful material has already been produced describing generators. I am going to focus on the interaction of static typing w

    Typing Generators with Flow | Flow
  • ジェネレータについて - JS.next

    概要 V8でジェネレータ周りの実装が進んできたので、解説してみようと思う。 ジェネレータ関数 ジェネレータ関数とは、(一つの見かたとしては)処理を途中で一時停止できる関数のことである。 例えば、呼び出される度に数を順番に返す関数を定義したいとする。 function count(n) { return function () { return n++ } } var next = count(10) next() // 10 next() // 11 next() // 12 これがジェネレータ関数を用いると次のように書ける。 function* count(n) { while (true) { yield n++ } } var gen = count(10) gen.next() // { value: 10, done: false } gen.next() // { value:

    ジェネレータについて - JS.next
  • JavaScript の ジェネレータ を極める! - Qiita

    ECMAScript 6(2015年6月に公開され、今もなお比較的新しい JavaScript)の大目玉である イテレータ と ジェネレータ。なかなかに複雑で巨大な仕組みになっていてややこしいです。 そこで今回は ジェネレータ を、順を追って理解できるように解説したいと思います。 Qiita: JavaScript の イテレータ を極める! ←こちらから読むのがオススメです Qiita: JavaScript の ジェネレータ を極める!(この記事) また、実用的なサンプルを「3. 実用サンプル」に示しました。 初めにこちらを見て、何ができるのかを知ってから読み始めるのもオススメです。 (2017年3月現在、オープンなページでの使用はまだ避けたほうがいいかもしれませんが、実装は確実に進んでいます。ECMAScript 6 compatibility table) 1. ジェネレータ、ジェ

    JavaScript の ジェネレータ を極める! - Qiita
  • koa, co そして thunk について - <body>

    Node の Web Framework としては Express が有名だが、 最近は、Node の ES6 実装に伴い、 ES6 の新しい機能を利用した koa という Web Framework が注目を集めている。 koa は ES6 の generators をフルに活用したインターフェイスが特徴で、 今までの JS に慣れている人間は度肝を抜かれること請け合いである。 下は、 koa で レスポンス時間を測るサンプルコードである。きもい var koa = require('koa'); var app = koa(); // logger app.use(function *(next){ var start = new Date; yield next; var ms = new Date - start; console.log('%s %s - %s', this.me

    koa, co そして thunk について - <body>
  • Experiments with Koa and JavaScript Generators

    Koa is a new application framework for Node.js. Its whole point is to eliminate the callback madness that plagues many Node.js apps. It achieves this previously-impossible feat by using the powerful generators feature which is new in JavaScript ES6. Koa is built by the same people who created Express, the best-known Node.js application framework, so it’s at least worth a look. Published Dec 21, 20

  • coとthunkifyとgenerator

    をしておく。 それと、generatorを使うので実行する際はnode.js ver.0.11を使い、オプションに--harmonyもしくは--harmony-generatorを指定する。 var co = require('co'); function wait() { return new Promise(function(resolve, reject) { setTimeout(resolve, 1000); }); } co(function* () { console.log('Hello'); yield wait(); console.log('World!'); }).catch(function(err) { throw err; }); Promiseを返す関数をcoに渡したgenerator内でyieldを使って同期的に書いている。エラーのハンドリングはcoが返す

  • generatorとJavaScriptの非同期処理 - Qiita

    はじめに ES6以降で使えるようになったgeneratorでJavaScriptの非同期処理を書く、という話をします。同様のトピックについてはすでに多くのブログで言及されているのですが、各所で異なった使われ方や解説がなされていることが多いように思われたので、ここではそれぞれの関係を明らかにしつつ、generatorのさまざまな使い方を整理するのが目的です。 ふつうのやり方 もっとも一般的なコールバックスタイルで書くとこうなる。コールバックの第1引数にErrorオブジェクト、第2引数に得られた結果を渡すのはnodeの慣習(エラー処理については今回は省略)。 function sleep(cb) { setTimeout(function() { cb(null, 'I woke up at ' + new Date()); }, 1000); } sleep(function(err, re

    generatorとJavaScriptの非同期処理 - Qiita
  • ジェネレータの解説と非同期への適用 - Block Rockin’ Codes

    update 2014-01-16 ご指摘頂いたので修正しました。ありがとうございます! @Jxck_ 動画すごくわかりやすかった!一個、重箱の隅っこなんだけど、convert関数のapplyしてるところ、fn.apply(fn, args) になってるけど fn.apply(this, args) が正しい気がしました!— Kazuhito Hokamura (@hokaccha) 2014, 1月 13 https://gist.github.com/Jxck/8380852 は修正済みです。動画の取り直しは勘弁して下さい(汗 - fn.apply(fn, args); + fn.apply(this, args); intro あけましておめでとうございます。 今年からはてなブログへ移行しました。 去年末くらいから流行っている Express の後継 Koa では JS の新機能ジェ

    ジェネレータの解説と非同期への適用 - Block Rockin’ Codes
    kitokitoki
    kitokitoki 2014/01/14
    yield, next, thunkify ,co
  • 1