1

ウィキペディアは、コルーチンをジェネレーターで実装できることを示唆しています。これは、 ES6 ジェネレーターを使用してノードファイバーを実装できることを意味しますか?

4

3 に答える 3

1

wait.for と呼ばれるファイバーのラッパーをコーディングしました: https://github.com/luciotato/waitfor

次に、ジェネレーターを使用して同じ機能をコーディングしました: https://github.com/luciotato/waitfor-ES6

両方を比較して、ジェネレーターがノードファイバーをどのように置き換えることができるかを確認できますが、構文は異なります。

同じ API を持つことを不可能にする 1 つの重要な違いは、ES6 のジェネレータ本体が特別な構文で実装されていることです。function* 一方、node-fibers では任意の js 関数を使用できます。

于 2014-05-01T04:42:35.640 に答える
0

非常に小さなサブセットを移植しようとしましたが、失敗しました。重要なのは、ノードFiber.yield()ファイバーはファイバーの呼び出しスタックのずっと上まで実行を停止するのに対し、ジェネレーターyieldは即時関数のみを停止することでした。同様に動作するシステム ( Task.jsなど) を実装できる場合もありますが、API 互換の実装は不可能のようです。

于 2013-08-17T21:41:10.017 に答える