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

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


20
forEachループでasync / awaitを使用する
使用に問題があるasync/のawait中にforEachループが?私は、ファイルの配列awaitと各ファイルのコンテンツをループしようとしています。 import fs from 'fs-promise' async function printFiles () { const files = await getFilePaths() // Assume this works fine files.forEach(async (file) => { const contents = await fs.readFile(file, 'utf8') console.log(contents) }) } printFiles() このコードは機能しますが、何か問題が発生する可能性がありますか?このようなより高次の関数ではasync/ を使用するべきではないと誰かに言わawaitれたので、これに問題があるかどうか尋ねたかっただけです。

19
既存のコールバックAPIをpromiseに変換するにはどうすればよいですか?
promiseを操作したいのですが、次のような形式のコールバックAPIがあります。 1. DOMロードまたは他の1回限りのイベント: window.onload; // set to callback ... window.onload = function() { }; 2.プレーンコールバック: function request(onChangeHandler) { ... } request(function() { // change happened ... }); 3.ノードスタイルコールバック( "nodeback"): function getStuff(dat, callback) { ... } getStuff("dataParam", function(err, data) { ... }) 4.ノードスタイルのコールバックを含むライブラリ全体: API; API.one(function(err, data) { API.two(function(err, data2) { API.three(function(err, …

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) …


10
jQueryの据え置きと約束-.then()と.done()
私はjQueryの遅延とプロミスについて読んでいますが、コールバックの成功に.then()&.done()を使用することの違いがわかりません。私が知っているエリックHyndsがいることを言及.done()して.success()同じ機能にマッピングするが、私はそう推測している.then()すべてのコールバックがすべて成功した操作の完了時に呼び出されるよう。 誰かが正しい使い方を教えてくれますか?

10
コールバックだけを約束しませんか?
私はJavaScriptを数年開発しており、約束についての大騒ぎをまったく理解していません。 私がすることはすべて変更であるようです: api(function(result){ api2(function(result2){ api3(function(result3){ // do work }); }); }); とにかく、私はasyncのようなライブラリを使用できます: api().then(function(result){ api2().then(function(result2){ api3().then(function(result3){ // do work }); }); }); どちらがより多くのコードであり、読みにくくなります。ここでは何も得られませんでしたが、突然魔法のように「フラット」になったわけでもありません。言うまでもなく、物事を約束に変換する必要があります。 では、ここでの約束についての大騒ぎは何ですか?

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ライブラリを使用せずにこれを処理するための推奨パターンは何ですか?

5
JavaScriptの約束-拒否とスロー
私はこの問題に関するいくつかの記事を読みましたがPromise.reject、エラーをスローすることとそれをスローすることの間に違いがあるかどうかはまだはっきりしません。例えば、 Promise.rejectの使用 return asyncIsPermitted() .then(function(result) { if (result === true) { return true; } else { return Promise.reject(new PermissionDenied()); } }); スローを使用する return asyncIsPermitted() .then(function(result) { if (result === true) { return true; } else { throw new PermissionDenied(); } }); 私の好みはthrow、それが短いからといって単純に使用することですが、一方が他方よりも優れているかどうか疑問に思っていました。

9
std :: promiseとは何ですか?
私はC ++ 11にかなり精通していますstd::thread、std::asyncとstd::futureの構成要素(例えば参照この回答)ストレートフォワードです。 でも、なんだかよくわからない std::promise、何をする、どのような状況で最適に使用されるは。標準のドキュメント自体には、クラスの概要以外の多くの情報は含まれていません。また、単に:: threadも含まれていません。 誰かstd::promiseが必要であり、それが最も慣用的な解決策である状況の簡潔で簡潔な例を誰かに教えてもらえますか?


5
then()からの戻り値またはPromise.resolveの違いは何ですか
違いは何ですか: new Promise(function(res, rej) { res("aaa"); }) .then(function(result) { return "bbb"; }) .then(function(result) { console.log(result); }); コードスニペットを実行する結果を非表示スニペットを展開 この: new Promise(function(res, rej) { res("aaa"); }) .then(function(result) { return Promise.resolve("bbb"); }) .then(function(result) { console.log(result); }); コードスニペットを実行する結果を非表示スニペットを展開 .then()のチェーニングでAngularと$ httpサービスを使用して異なる動作を取得しているので、質問しています。少しコードが多すぎるため、最初に上記の例を使用します。


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(); } これは正常に動作しますが、これを行う簡単な方法はありますか?そうでない場合、これは良い習慣ですか?

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