2016-06-15 11 views
1

数年前にjQueryまたはQのいずれかを使用して約束を果たしました。今はかなり錆びていて、新しいネイティブES6の約束ネイティブ(ES6)JavaScriptの約束を使用して約束または通常のオブジェクトの「待機中」

私は、あなたが何かを「待つ」ことができ、それが明白な目的か約束かどうか気にしない1つのきちんとした概念を覚えているようです。コールバックが非同期的に完了したときにコールバックが呼び出されることが約束されている場合、コールバックはすぐに呼び出されます。

しかし、これがどのように行われたかはわかりません。私はそれが名前を持っているかどうかわからないので、それはGoogleには難しいと証明している。私はそれがJSの約束の実装全体の標準的な機能かどうか、あるいはそれがちょうどjQueryだけだったのかどうかはわかりません。

これは何と呼ばれていますか?ネイティブの約束でこれをやってもいいですか?どこでそれを読むことができますか?

+0

jQueryの '.when()'とは、 'Promise.all()'と似ているかもしれません... – hippietrail

+0

'Promise.resolve(x)'でしょうか?あなたがそれを約束すれば、それはただの約束を返しますが、もしあなたが何か他のものを与えれば、その価値を持ってすぐに実現する約束を返します。 – AgentME

+0

@AgentME:ああ。 jQueryの約束事とネイティブとの間には別のものがあるようです。彼らはすでに私の脳を少し曲げたが、違いはそれを悪化させている\ - : – hippietrail

答えて

2

jQueryの$.when()とES6のPromise.all()の両方に、参照する動作があります。約束を提供し、関数は約束を待つが、それ以外の値についてはすぐに返る。

+5

'Promise.all()'は反復可能なオブジェクト(配列など)しか取らず、同時にiterable内の各約束を実行することは注目に値します。 ['Promise.resolve()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve)(これは 'Promise.all()'によって使用されます。 jQueryの '$ .when()'と直接的に平行しています。 –

+5

つまり、 '$ .when(x)'は 'Promise.resolve(x)'にほぼ相当し、 '$ .when(x、y、z)'は 'Promise.all([ x、y、z]) 'である。 –