2017-08-20 4 views
0

約束とコールバックの文脈においてのみ、次のことは意味がありますか?NodeJSの約束事とコールバックの入れ子はどのくらい深いですか?

static getDefaultAdminHeader(_this) { 
    return new Promise((resolve, reject) => { 
    [NodeJS fs module].readFile([NAME OF FILE], (err, fd) => { 
     resolve(fd); 
    }); 
}); 
} 

他の言葉:上記の約束は何もしないで、余分なコールバックを追加するだけですか?または、この構造にプログラム的なプラスがありますか?

+3

からpromisifyAll機能を持つ代わりに、例えば、https://www.npmjs.com/package/fs-extra

  • 使用の標準fs;'、そうでなければ、これは永遠にハングアップすることができ。しかし、コードベースの残りの部分でコールバックではなく約束を使用したい場合は特にそうでないことはありません。使用しているライブラリによっては、すでにノードスタイルのコールバックのためのpromisifyユーティリティ関数があるかもしれません。例えば、 https://stackoverflow.com/questions/22519784/how-do-i-convert-an-existing-callback-api-to-promises – jonrsharpe

  • +0

    @jonrsharpe、私はあなたが答えとしてこれを加えるべきだと思います。 – RaghavGarg

    +0

    「*何よりも単純に余分なコールバックを追加する」とはどういう意味ですか?プラス、他の何かに比べて? – Bergi

    答えて

    0

    あなたの質問から、あなたが望むよう

    約束は多くの層としてネストすることができますが、あなたのコードが汚れて見えます。

    通常、ネストされた約束、あるいは約束とコールバックが混在してはいけません。

    あなたのコードから、コールバックを削除する多くのソリューションがあります。

    1. 使用fs promise moduleあなたは `(ERR)は(ERR)を拒否した場合にすべきであるbluebirdライブラリ
    +0

    多分私は質問を明確にすることができます: 関数 'A'は、非同期関数 'D'を作成する約束関数 'C'を作成する関数 'B'を呼び出します。 CはBに戻ります(そしてBは本当に必要です)。 私は不必要に非同期関数の約束ラッパーを使用していますか?または、これを行うためのサーバー側のメリットはありますか? (私は意味がありますか?) –

    +0

    @RamaSchneiderあなたは関数A、B、C、Dを作成できます。それらのすべてが約束を返します。コマンドセクションのメイン機能 –

    +0

    のA.then(B)。(C)。(D)を使用してコードをプリフォーマットすることはできませんが、あなたはアイデアを得ることができます –

    関連する問題