2016-08-17 12 views
2

私はちょうどMDNのプロミスについて読んだことがあります。構文を理解することはできますが、なぜそれが必要なのかはわかりません。JSでプロミスが必要なのはなぜですか

Promiseを使用してのみ行うことができる特定のケースはありますか?それとも、よりクリーンなコードを書く方法ですか?

+1

機能JSでそれが不可欠であるので、我々がそれを必要とします。 – Redu

+2

「標準」JavaScriptでは実行できない約束を使用して行うことはできません。これは、非同期アクションよりもはるかに強力な抽象化であり、結果としてよりクリーンなコードになります。それでも、完全にオプションです。 – m90

+0

また、入れ子のレイヤーが1つしかない場合は、コールバックを使用する方が簡単だと思います。 –

答えて

3

プロミスオブジェクトは、非同期機能を実行するために使用されます。 MDNドキュメントの1行目から

プロミスオブジェクトは、非同期計算のために使用されます。プロミスはまだ完了していないが、将来的に期待される単一の非同期操作を表します。

+0

問題はMDNの例であり、他の場所はそのように書く必要はないようです。より洗練されたコードを書くのであれば、私は理解できます。後ろに隠された有用なものがあるかどうかは分かりません。 – Hp93

5

約束は、よりクリーンなコードを書くが、コールバック地獄を減らす(または完全に取り除く)能力を与える。

さらに、コールバックは、async functionsのように、ES2017で提供されるいくつかの新しい構文機能のバックボーンであり、より洗練されたコードを書くことができます。

3つ目のことは、自動エラー処理の構文を初めて学ぶときにすぐには分かりません。約束は、エラーをチェーンに伝え、手作業によるエラー処理のレイヤーを設けることなく、共通の場所で処理することができます。

1

単なる書き込みクリーナーコードです。これを見て:

https://www.npmjs.com/package/q

それは言う:最初のパスで

を、約束は「ドゥームのピラミッド」を軽減することができます。コードは右に行進状況はより速く、それは前方行進より。

0

Promiseオブジェクトは非同期計算に使用されます。 Promise は、まだ完了していない単一の非同期操作を表します。 が将来予想されます。

ここは例です。非同期的に、他のすべてのコードが実行した後、我々は約束を取り付けたハンドラが実際に呼び出されたことを、

まず:あなたはこの例では、二つのことを図解するここhttp://jsbin.com/yumapi/5/edit?html,js,output

function dieToss() { 
    return Math.floor(Math.random() * 6) + 1; 
} 

console.log('1'); 
var promise = new RSVP.Promise(function(fulfill, reject) { 
    var n = dieToss(); 
    if (n === 6) { 
    fulfill(n); 
    } else { 
    reject(n); 
    } 
    console.log('2'); 
}); 

promise.then(function(toss) { 
    console.log('Yay, threw a ' + toss + '.'); 
}, function(toss) { 
    console.log('Oh, noes, threw a ' + toss + '.'); 
}); 

console.log('3'); 

それを実行することができます。

第2に、フルフィルメントハンドラは、それが解決された値(この場合は、サイコロの結果)とともに、約束が満たされたときにのみ呼び出されたということです。拒否ハンドラについても同様です。

のMozillaのクレジットとToptotal

+0

こんにちは、私は構文の仕組みを理解しています。例だけでは、ツールを使用する良い例は示されていません。あなたの例のように、_fulfill()_と_reject()_を2つの_console.log_行で置き換えて、同じ結果を得ることができます。 – Hp93

+1

あなたはそれを必要としません。このようなケースや非同期リクエストのために作られたものです。彼らが約束を使用するときに他の人々のコードを理解できる限り、あなたが現在の方法を使用するならば、その罰金。 –

+0

それが助けてくれたら教えてください! –

関連する問題