2016-09-07 12 views
0

これはほとんど意見に基づいていないかもしれませんが、重要な質問です。NodeJSいつ約束を使用するのですか?

約束は非同期操作にのみ使用する必要がありますか?あなたがapiを持っているなら、非常に可能性が高い、そこの関数の完全なスタックは約束を使うべきです。だから私はビジネスロジックの機能をいくつか作ったら、約束を返すべきだ。私はこれが良いのだろうか、あなたはすべてが約束を返すのだろうかと思います。つまり、私はwhileループの中で関数を呼び出しています。whileループのそれぞれは約束を返します(関数は連鎖しています)。関数内で約束を使うのが遅いのですか?約束と通常の戻り値を組み合わせることはスタックの中での良い考えですか?

+6

関数が非同期の場合は、約束を返す必要があります。それが非同期の何かをしないなら、それが約束を返す正当な理由はなく、あなたはそれを避けるべきです。 – Bergi

+0

はい、しかし、別の質問のコメントでは、「はい」、時には同期「非常に悪い考えですので、常に約束を返します」と返信しました。私が言ったときには:「さて、同期運転から約束を返すことは大丈夫です。」 Look:http://stackoverflow.com/questions/38866725/nodejs-using-promises-for-api-calls –

+0

さらに、「同期操作から約束を返すことは大丈夫です。動作が同期しているかどうかを再確認してください。 " –

答えて

2

機能が(時には)非同期の場合、約束を返す必要があります。
関数が非同期を何もしない場合、それが約束を返す正当な理由はなく、回避する必要があります。シンプルで同期してください。

+0

また、[プロミスのハンドラの同期コード](http://stackoverflow.com/q/36605186/1048572) – Bergi

+0

を参照して、非同期関数と同期関数を一緒にチェーンすることはできますか?例えば、私はまずapi呼び出しを行い、次にそれをvalidateResponse関数に連結したいと思います。もしそれらのいずれかにエラーがあるなら、それを捕まえたいと思います。それはできますか?約束事では、sendQuery()。then(validateResponse).then(transformResponse).catch(err ...)と非常に簡単です。検証機能と変換機能は同期していますが、チェーンを継続するという約束を返す必要があります。また、このチェーン全体が1つのメインAPI関数内にある場合、それは約束を返すべきですか? –

+0

@ VilleMiekk-oja:私はちょっとあなたがそれを尋ねることを知っていたので、上のリンクを投稿しました:-)はい、はい、はい、はい。 – Bergi

関連する問題