問題タブ [es6-promise]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Mocha で promise をテストする方法
Promise を返す非同期関数をテストするために Mocha を使用しています。
プロミスが正しい値に解決されることをテストする最良の方法は何ですか?
jquery - jQuery $.Deferred 固有の問題 (jQuery 1.x/2.x)
@Domenic には、jQuery 遅延オブジェクトの失敗に関する非常に詳細な記事があります: You're missing the Point of Promises。その中で Domenic は、Q、when.js、RSVP.js、および ES6 の promise を含む他のものと比較して、jQuery の promise のいくつかの失敗を強調しています。
私はドメニックの記事から離れて、jQuery の約束には概念的に本質的な失敗があると感じています。私は概念に例を挙げようとしています。
jQuery の実装には 2 つの懸念事項があると思います。
1..then
メソッドはチェーン可能ではありません
言い換えると
が満たされるとjQueryが呼び出さa
れます。b
promise
.then
他の promise ライブラリで新しい promise を返すため、同等のものは次のようになります。
2. 例外処理は jQuery でバブリングされます。
もう1つの問題は、例外処理のようです。つまり、次のとおりです。
Q で同等のものは次のようになります。
jQuery ではa
、catch ブロックに失敗すると、例外がスローされてバブルします。他のプロミスでは、例外はorまたは他の非同期キャッチa
に引き継がれます。promise API 呼び出しのいずれも例外をキャッチしない場合、例外は消えます (したがって、未処理の例外を解放するために使用するなどの Q のベスト プラクティス)。.done
.catch
.done
上記の問題は、promise の jQuery 実装に関する懸念をカバーしていますか、それとも問題を誤解または見逃していますか?
編集 この質問はjQuery < 3.0に関連しています。jQuery 3.0 alphaの時点で、jQuery は Promises/A+ に準拠しています。
javascript - 明示的なプロミス構築のアンチパターンとは何ですか? また、それを回避するにはどうすればよいですか?
私は次のようなコードを書いていました:
これはそれぞれ「遅延アンチパターン」または「Promise
コンストラクターアンチパターン」と呼ばれていると誰かが私に言いました。このコードの何が悪いのか、なぜこれがアンチパターンと呼ばれるのですか?
javascript - プロミスの連鎖で最初に成功したプロミスの値を取得する方法
別の promise が失敗した場合にのみpromise を返す方法を探しています。
どうやってやるの?
私が持っている約束は次のようになります(もちろん、関連のないコードは削除しました):
そして、次の順序でそれらを組み合わせたい
- 呼び出し
getUserByUsername
、拒否された場合は呼び出しgetUserByEmail
- 上記の 2 つのプロミスから解決した人の値を返します。または、両方のプロミスが失敗した場合は、チェーン全体を拒否します。
- 値を指定して呼び出し
checkPassword
、拒否された場合はチェーン全体を拒否します
これまでのところ、私はこれを行ってきましたが、うまくいくようです。(私はwhen.jsを使用しています)
したがって、このコードは機能しますが、これを行うためのよりエレガントな方法があるはずです (私のコードはハックのように見えると思います)。
javascript - Jasmine 2.0でES6の約束をテストするには?
(おそらくシムされた) ES6 promise を返す関数があり、それが正常に解決され、解決された値が正しいことを確認する Jasmine テストを作成したいと考えています。どうすればいいですか?
これは私が現時点で見つけた方法ですが、少なくとも退屈です:
jasmine-as-promisedというライブラリもあり、役に立ちそうでしたが、残念ながら Jasmine 2.0 では機能しませんruns()
。
Jasmine 2.0 で Promise をテストするために開発された快適なソリューションはありますか?
jquery - jQuery Deferred に基づく ES6 Promise ポリフィル
最近、ES6 Promises を使用するライブラリをダウンロードしました。Promises をサポートしていないブラウザーにデプロイしたいので、polyfillもダウンロードしました。
とにかくjQueryが含まれているので、jQueryのDeferredを内部的に使用するPromiseのポリフィルを書くことを考えました。
特定のユースケースには十分なこの単純なポリフィルを作成しました。
これに関する問題は、仕様全体をカバーしていないことです (Promise.all()
不足していると思われます)。
これに多くの時間を費やす前に、jQuery の Deferred を使用して Promise の完全なポリフィルを記述できるかどうかを知りたいと思います。または、複製できない機能がいくつかありますか?