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

Promiseは、ローカルコンピューティングのスレッドとイベントループの同時実行、および同期と非同期の両方のリモートメッセージングなど、いくつかの同時実行スタイルに適した遅延コンピューティングの戦術です。promiseは、非同期操作の最終的な結果を表します。プロミスを処理する主な方法は、プロミスの最終的な価値または失敗の理由から新しいプロミスへの変換を登録する方法です。


27
約束を次々に解決しますか(つまり、順番に)?
ファイルの配列をシリアル/シーケンシャルに読み取る次のコードを考えてみます。readFilesすべてのファイルが順番に読み込まれたときにのみ解決されるpromiseを返します。 var readFile = function(file) { ... // Returns a promise. }; var readFiles = function(files) { return new Promise((resolve, reject) => var readSequential = function(index) { if (index >= files.length) { resolve(); } else { readFile(files[index]).then(function() { readSequential(index + 1); }).catch(reject); } }; readSequential(0); // Start! }); }; 上記のコードは機能しますが、物事が連続して発生するために再帰を実行する必要はありません。奇妙なreadSequential関数を使用する必要がないように、このコードを簡単に書き直す方法はありますか? …

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その後すぐに食事をする習慣に入る必要がありますか?

1
ES6のプロミスがあるため、QやBlueBirdなどのプロミスライブラリを使用する理由はまだありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 この質問を改善する Node.jsがpromiseのネイティブサポートを追加した後も、QやBlueBirdなどのライブラリを使用する理由はまだありますか? たとえば、新しいプロジェクトを開始していて、このプロジェクトでこれらのライブラリを使用する依存関係がないと仮定すると、そのようなライブラリを使用する理由は本当にないと言えますか?


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:そのようなコードを実行すると、これは事実であるように見えますが、もちろんそれは証明ではありません。偶然かもしれません。

7
.then(成功、失敗)はいつ約束のアンチパターンと見なされますか?
ブルーバードプロミスFAQを見てみましたが、これ.then(success, fail)はアンチパターンであると述べています。トライアンドキャッチについては説明がよくわかりません。これの次の何が問題になっていますか? some_promise_call() .then(function(res) { logger.log(res) }, function(err) { logger.log(err) }) 例は正しい方法として次のことを示唆しているようです。 some_promise_call() .then(function(res) { logger.log(res) }) .catch(function(err) { logger.log(err) }) 違いは何ですか?

5
ネイティブXHRを約束するにはどうすればよいですか?
この投稿を改善したいですか?この質問に対する詳細な回答を提供してください。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 フロントエンドアプリで(ネイティブ)プロミスを使用してXHRリクエストを実行したいが、大規模なフレームワークのすべてのあざけりはありません。 私は私のXHRは約束を返すようにしたいが、これは動作しません(私を与えます:Uncaught TypeError: Promise resolver undefined is not a function) function makeXHRRequest (method, url, done) { var xhr = new XMLHttpRequest(); xhr.open(method, url); xhr.onload = function() { return new Promise().resolve(); }; xhr.onerror = function() { return new Promise().reject(); }; xhr.send(); } makeXHRRequest('GET', 'http://example.com') .then(function (datums) { console.log(datums); });

6
Angular HttpPromise: `success` /` error`メソッドと `then`の引数の違い
AngularJS docによると$http、以下を返すための呼び出し: 標準のthenメソッドと2つのhttp固有のメソッド(successおよびerror)を持つpromiseオブジェクトを返します。その後、この方法は、二つの引数取り、成功とエラーレスポンスオブジェクトに呼び出されるコールバックを。成功メソッドとエラーメソッドは単一の引数を受け取ります。この関数は、リクエストが成功または失敗したときにそれぞれ呼び出されます。これらの関数に渡される引数は、thenメソッドに渡される応答オブジェクトの非構造化表現です。 responseオブジェクトが1つのケースで分解されているという事実は別として、私は両者の違いがわかりません の引数として渡される成功/エラーコールバック promise.then promiseのpromise.success/ promise.errorメソッドの引数として渡されるコールバック 何かありますか?一見同一のコールバックを渡すこれらの2つの異なる方法のポイントは何ですか?
177 angularjs  promise 

3
Node.js UnhandledPromiseRejectionWarningで処理されていないプロミスを見つける方法は?
バージョン7のNode.jsには、promiseを処理するための非同期/待機シンタックスシュガーがあり、私のコードでは次の警告が頻繁に表示されます。 (node:11057) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ReferenceError: Error: Can't set headers after they are sent. (node:11057) 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. 残念ながら、キャッチが欠落している行への参照はありません。すべてのtry / catchブロックをチェックせずにそれを見つける方法はありますか?

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仕様を使用します。

5
Array.mapで非同期待機を使用する
次のコードがあるとします: var arr = [1,2,3,4,5]; var results: number[] = await arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; }); 次のエラーが発生します。 TS2322:タイプ 'Promise <number> []'はタイプ 'number []'に割り当てることができません。タイプ 'Promise <number>はタイプ' number 'に割り当てることができません。 どうすれば修正できますか?一緒に作っasync awaitてArray.map一緒に作業するにはどうすればよいですか?

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

4
モカとチャイでプロミスを適切にテストするにはどうすればよいですか?
次のテストの動作がおかしい: it('Should return the exchange rates for btc_ltc', function(done) { var pair = 'btc_ltc'; shapeshift.getRate(pair) .then(function(data){ expect(data.pair).to.equal(pair); expect(data.rate).to.have.length(400); done(); }) .catch(function(err){ //this should really be `.catch` for a failed request, but //instead it looks like chai is picking this up when a test fails done(err); }) }); 拒否された約束を適切に処理(およびテスト)するにはどうすればよいですか? 失敗したテストを適切に処理するにはどうすればよいexpect(data.rate).to.have.length(400);ですか(例:? これが私がテストしている実装です: …
148 node.js  promise  mocha  chai 

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