タグ付けされた質問 「es6-promise」

ES6 Promiseは、進行中の非同期操作を表すECMAScript 2015オブジェクトです

17
.then()チェーンで以前のpromise結果にアクセスするにはどうすればよいですか?
私はに私のコードを再構築してきた約束、そして素晴らしい長い建てフラット約束チェーンを複数からなる、.then()コールバック。最後に、いくつかの複合値を返し、複数の中間promise結果にアクセスする必要があります。ただし、シーケンスの中央からの解決値は、最後のコールバックのスコープ内にありません。それらにアクセスするにはどうすればよいですか? function getExample() { return promiseA(…).then(function(resultA) { // Some processing return promiseB(…); }).then(function(resultB) { // More processing return // How do I gain access to resultA here? }); }

2
明示的なプロミスコンストラクションアンチパターンとは何ですか?
私は次のようなことをするコードを書いていました: function getStuffDone(param) { | function getStuffDone(param) { var d = Q.defer(); /* or $q.defer */ | return new Promise(function(resolve, reject) { // or = new $.Deferred() etc. | // using a promise constructor myPromiseFn(param+1) | myPromiseFn(param+1) .then(function(val) { /* or .done */ | .then(function(val) { d.resolve(val); | resolve(val); }).catch(function(err) …

18
一部が拒否されても、すべての約束が完了するまで待ちます
Promiseネットワーク要求を行っているのセットがあり、そのうちの1つが失敗するとします。 // http://does-not-exist will throw a TypeError var arr = [ fetch('index.html'), fetch('http://does-not-exist') ] Promise.all(arr) .then(res => console.log('success', res)) .catch(err => console.log('error', err)) // This is executed 失敗したかどうかに関係なく、これらがすべて完了するまで待機したいとします。リソースがなくても存続できるリソースにネットワークエラーがある可能性がありますが、取得できる場合は続行する前にそのエラーが必要です。ネットワークの障害を適切に処理したい。 このためのPromises.all余地はないので、promisesライブラリを使用せずにこれを処理するための推奨パターンは何ですか?


7
非同期/待機構文で拒否する方法は?
非同期/待機関数によって返されたプロミスをどのように拒否できますか? 例:もともと foo(id: string): Promise<A> { return new Promise((resolve, reject) => { someAsyncPromise().then((value)=>resolve(200)).catch((err)=>reject(400)) }); } async / awaitに翻訳する async foo(id: string): Promise<A> { try{ await someAsyncPromise(); return 200; } catch(error) {//here goes if someAsyncPromise() rejected} return 400; //this will result in a resolved promise. }); } では、この場合、この約束を適切に拒否するにはどうすればよいですか?

20
関数スコープ外のJavascript Promiseを解決する
ES6 Promiseを使用しています。 通常、Promiseは次のように作成および使用されます new Promise(function(resolve, reject){ if (someCondition){ resolve(); } else { reject(); } }); しかし、私は柔軟性を高めるために、以下のようなことを外で解決しようとしています。 var outsideResolve; var outsideReject; new Promise(function(resolve, reject) { outsideResolve = resolve; outsideReject = reject; }); 以降 onClick = function(){ outsideResolve(); } これは正常に動作しますが、これを行う簡単な方法はありますか?そうでない場合、これは良い習慣ですか?

17
Promise.allでのエラーの処理
私は解決している約束の配列を持っています Promise.all(arrayOfPromises); 私は約束の連鎖を続けます。こんな感じ existingPromiseChain = existingPromiseChain.then(function() { var arrayOfPromises = state.routes.map(function(route){ return route.handler.promiseHandler(); }); return Promise.all(arrayOfPromises) }); existingPromiseChain = existingPromiseChain.then(function(arrayResolved) { // do stuff with my array of resolved promises, eventually ending with a res.send(); }); エラーが発生した場合に個々のプロミスを処理するためにcatchステートメントを追加したいのですが、試行すると、Promise.all最初に見つかったエラーが返され(残りは無視されます)、残りのプロミスからデータを取得できません配列(エラーにはなりませんでした)。 私は..のようなことをやってみました existingPromiseChain = existingPromiseChain.then(function() { var arrayOfPromises = state.routes.map(function(route){ return route.handler.promiseHandler() .then(function(data) { …

6
早期解決/却下後に戻る必要がありますか?
次のコードがあるとします。 function divide(numerator, denominator) { return new Promise((resolve, reject) => { if(denominator === 0){ reject("Cannot divide by 0"); return; //superfluous? } resolve(numerator / denominator); }); } 私の目的がreject早期終了を使用することである場合、私はreturnその後すぐに食事をする習慣に入る必要がありますか?

6
未処理の約束拒否とは何ですか?
Angular 2を学ぶために、私は彼らのチュートリアルを試しています。 次のようなエラーが発生します。 (node:4796) UnhandledPromiseRejectionWarning: Unhandled promise rejection (r ejection id: 1): Error: spawn cmd ENOENT [1] (node:4796) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node. js process with a non-zero exit code. SOでさまざまな質問と回答を行いましたが、「未処理の約束の拒否」が何であるかを見つけることができませんでした。 誰かがそれが何であるか、また何Error: spawn cmd ENOENTが起こったのか、そしてこの警告を取り除くために何を確認する必要があるのか​​を簡単に説明できますか?

3
Promise.all:解決された値の順序
MDNを見ると、Promise.all valuesのthen()コールバックに渡されたように見えます。promiseの順序で値が含まれています。例えば: var somePromises = [1, 2, 3, 4, 5].map(Promise.resolve); return Promise.all(somePromises).then(function(results) { console.log(results) // is [1, 2, 3, 4, 5] the guaranteed result? }); 誰がどの順序であるvaluesべきかを明記した仕様を引用できますか? PS:そのようなコードを実行すると、これは事実であるように見えますが、もちろんそれは証明ではありません。偶然かもしれません。


13
Node.jsネイティブPromise.allは並列処理ですか、それとも順次処理ですか?
ドキュメントについてはあまり明確ではないので、この点を明確にしたいと思います。 Q1:ですPromise.all(iterable)順次または並列にすべての約束を処理しますか?または、より具体的には、次のようなチェーンされたpromiseを実行することと同等です。 p1.then(p2).then(p3).then(p4).then(p5).... またはそれは、すべてのアルゴリズムのいくつかの他の一種であるp1、p2、p3、p4、p5、など(並列に)同じ時に呼び出されているとの結果がすべて解決(または1人の不合格品)とすぐに返されますか? Q2:Promise.all並列実行する場合、反復可能オブジェクトを連続して実行する便利な方法はありますか? 注:Q、またはBluebirdを使用したくありませんが、すべてのネイティブES6仕様を使用します。

8
Axiosは応答ヘッダーフィールドにアクセスできます
ReactとReduxを使用してフロントエンドアプリを構築しています。リクエストを実行するためにaxiosを使用しています。応答のヘッダーのすべてのフィールドにアクセスしたいのですが。私のブラウザーでは、ヘッダーを調べて、必要なすべてのフィールド(トークン、uidなど)が存在することを確認できますが、 const request = axios.post(`${ROOT_URL}/auth/sign_in`, props); request.then((response)=>{ console.log(response.headers); }); 私はちょうど得ます Object {content-type: "application/json; charset=utf-8", cache-control: "max-age=0, private, must-revalidate"} 他のすべてのフィールドが表示されていることがわかるように、ここに私のブラウザネットワークタブがあります。 ベスト。

22
JavaScript Promiseの状態を同期的に判断するにはどうすればよいですか?
純粋なJavaScriptプロミス(組み込み実装またはポリフィル)があります。 var promise = new Promise(function (resolve, reject) { /* ... */ }); より仕様、約束は、のいずれかになります。 「解決済み」と「解決済み」 「解決済み」と「拒否」 '保留中' Promiseに同期的に問い合わせて、次のことを決定する使用例があります。 Promiseは解決しましたか? もしそうなら、約束は解決されますか? #then()Promiseの状態が変化した後に非同期で実行されるように作業をスケジュールするのに使用できることを知っています。私はこれを行う方法を尋ねていません。 この質問は、特にPromiseの状態の同期問い合わせに関するものです。どうすればこれを達成できますか?

5
Vuexアクションからの約束の回復
私は最近、jQからより構造化されたフレームワークであるVueJSへの移行を開始しました。 概念的には、Vuexは私にとって少しパラダイムシフトでしたが、私は今、そのすべてが何であるかを知っており、それを完全に理解していると確信しています!しかし、ほとんどが実装の観点から、いくつかの小さな灰色の領域が存在します。 これは設計上は良いと感じますが、単方向データフローのVuex サイクルと矛盾するかどうかはわかりません。 基本的に、アクションからpromise(like)オブジェクトを返すことは良い習慣と考えられていますか?私はこれらを非同期状態のラッパーとして扱い、障害などの状態があるので、promiseを返すのに適しているようです。逆にミューテーターは物事を変えるだけで、ストア/モジュール内の純粋な構造です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.