2016-04-15 15 views
1

JavaScriptの約束がコールバックを内部的に使用しているかどうか不思議です。それは運命のピラミッドを避け、コードをきれいにする仕様ですか?約束の内部作業

+1

ブラウザによって異なると思います。それはなぜ重要なのでしょうか? – llamerr

+1

'var myPromise = function(){ return { :function(ハンドラ){ var data = 100; ハンドラ(データ)。 } }; } '... [Demo](https://jsfiddle.net/rayon_1990/4dqkzzaa/) – Rayon

+1

私はあなたが"コールバック地獄 "として知られているものについて話していると思います。これは約束の私の好きな記事の一つであり、約束のこの側面について正確に話しています:https://blog.domenic.me/youre-missing-the-point-of-promises/ – Herku

答えて

1

確かに、それは.then(callback)に渡された関数をコールするという意味で "コールバック"を使用しますが、約束はコールバック以外のものです。それ

  • は、つまり、あなたが約束して行うことができます

すべて非常に構成可能な「コールバック」を作る.then().then().then()...を例外を処理し、.then(onFulfilled, onRejected)

  • onRejected一部に「理由」を拒否チェーン可能ですコールバックを使用することもできますが、実際には、前述したように、「運命のピラミッド」を読んで維持し、回避することが実際には時々簡単です。

  • +0

    良い例は連鎖可能な約束です1つのレイヤーがサーバーからデータを受信し、それらを再フォーマットすること、および既にフォーマットされたデータを使用して2番目のレイヤーを作成することについてです。これは懸念の分離をもたらし、実装が本当に簡単です – Walfrat

    +0

    @kavunこれは、jmlでxmlhttpreqオブジェクトなどを作成することで、たくさんのコードを書くことなく、jQueryで簡単にajaxを作成する方法と同じです。モジュラーで管理しやすいコードを取得する。私が間違っている場合は私を修正してください、そして情報に感謝!! – Vino

    +0

    '$ .ajax'で' success'コールバックオプションを使うと、jqXHRの代わりにコールバックを使うことができます(プロミスインターフェイスを実装しています)ので、どちらの方法でも 'XMLHttpRequest'よりも優れています – kavun