2015-09-29 4 views
9

ノード4.xでES6が正式に標準となったので、どのように約束を使用しますか? Doモジュール(たとえば、ネイティブfsモジュール)はPromisesで自動的に動作しますか?または、モジュールはPromisesで動作するように具体的に記述する必要がありますか?プロミスを使うことができ、何ができないのか、どのように知っていますか?ノード4.xで約束を使用するには?

ノード4.xのネイティブプロミスでどこから始めるべきかについて私が混乱しているプロミスの実装(Q、ブルーバードなど)は非常に多くありました。

+4

私は_promise_、あなたは間違いなくすぐに答えを得るでしょう:) – Tushar

+0

自分の非同期操作の約束を返す組み込みのnode.jsモジュールがないことは知っています。彼らは引き続き常に同じコールバックを使用しています。あなたができることは、標準のnode.js非同期呼び出し規約から約束を返す関数を作るために、これらのインターフェースの誰にでも「約束する」ことです。実際、Bluebirdの 'Promisify.promisifyAll()'のようなものを使うと、 'var fs = Promise.promisifyAll(require(" fs "));'のように 'require()'時間にモジュール全体を約束することができます。そのモジュールの新しい機能は、新しい約束のバージョンを持っています。非常に便利。 – jfriend00

答えて

16

どのように約束を使用しますか?

「ネイティブ」約束は、新しいコンストラクタ「約束」を使用して使用することができます。 APIの基本はover on MDNで、プロミスcan be found on HTML5Rocksの詳細な調査があります。

Doモジュール(たとえば、ネイティブfsモジュール)は自動的にPromisesで動作しますか?

これらはありませんが、it's not so difficult to make a wrapperです。もちろん、Node API全体でこれを行うのはやや面倒かもしれません。

OPのコメントの1つに、BluebirdのPromisifyAllがあります。これは、モジュール全体をPromisesを使用するように変換する魔法のようです。ニフティ!

私はいくつかのPromise-ified APIを今後のバージョンのNodeで期待していますが、これは確かではありません。おそらくio.jsプロジェクトのどこかに問題や議論があるかもしれません。私が何かを見つけたら、調査して更新します。

なぜ我々は約束コールバックスタイルのAPIを持っているのですか? これは、コールバックを削除するなど、APIの変更を壊す可能性があるため、Promisesを追加するほうが簡単であるという理由が考えられます。

また、モジュールはPromisesで動作するように具体的に記述する必要がありますか?

があります。

プロミスを使用することができないものとできないものをどのように知っていますか?

documentationは、常にAPIの質問に最適な場所です。私はPromisesを返すものは何も知らないが、私は日常的にNode APIの小さなサブセットを使用していることは間違いない。

私はノード4.xではネイティブの約束を開始する場所に混乱していますので、多くの異なった約束の実装(Q、ブルーバード、など)がありました

これらの異なる実装に関して特定の質問がありますか?私が考えているのは、ネイティブプロミスが非常に少ないことです。彼らは非同期コードを少しきれいにするのに十分ですが、彼らにはフリルがありません。あなたは2つのことを行う言及したものの他のライブラリ:

  • ネイティブの約束をサポートしていない環境では、最初のユースケースは、もは​​や必要では派手な機能の様々な程度に
  • を追加していないため

    1. はポリフィルを提供ノード内の。したがって、あなたがそれらの派手な機能のいずれかが必要なのか必要なのかを判断することが重要です。

      この回答が満足できない場合は教えてください。私は詳細情報を更新しようとします。

    関連する問題