問題タブ [bluebird]
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 - Sequelize の Promise: 各 Promise から結果を取得する方法
Sequelize >=1.7 では、promiseを使用できます
このコードで各ユーザーから値を取得する方法を説明してもらえますか:
UPD
他のモデルとの関連付けを設定するには、すべての値が必要です。実際には、次のようなコードが必要です:
javascript - promise でエラーを処理するにはどうすればよいですか?
ノードプログラマーとして。コード内のエラーを処理するために「ノードバック」を使用することに慣れています。
その関数を書くとき、私は次のようなことができます:
promise でこの種のエラー処理を行うにはどうすればよいでしょうか?
promise - bluebird が未処理の拒否をログに記録するのはいつですか?
ブルーバードが未処理の拒否をログに記録するのではなく、ドロップする時期を理解するのに苦労しています。これは、ドキュメンテーションで「2 番目のターン」と呼ばれるものと関係があると思いますが、それが何を意味するのかは明確ではありません。
→ログなし
-> スタック トレースがログに記録されます
→ログなし
-> スタック トレースがログに記録されます
-> スタック トレースがログに記録されます
私はいくつかのコードをブルーバードの約束に変換している途中で、拒否がいたるところに落ちています。(わかりました、最初は#100でした。私はばかです。)現在のサイレント失敗を乗り越えるために .method ではなく .promisify を使用すると思いますが、見逃してしまう他の状況があるかもしれないのではないかと恐れています。スローされたエラー。
javascript - Bluebird エラー ハンドラーを使用するにはどうすればよいですか?
序章
この質問は、最終的に、Bluebird での開発中に発生した問題を解決することを目的としています。ただし、いくつかのことを明確にする機会も利用しているため、補足的な質問があります。また、今後のストーリーを読んでいるときに混乱や退屈を感じる可能性があることをあらかじめお詫び申し上げます。
質問
私の理解では、Bluebird は次の戦略に従って、無視された拒否をインテリジェントにキャッチしようとします。
2 番目のアプローチは、bluebird がデフォルトで採用しているもので、2 番目のターンの開始までに拒否が処理されない場合に、登録済みのハンドラーを呼び出すことです。-- Bluebird Readme # エラー処理
ここで、最初の副次的な質問があります。「第 2 ターンの開始」とはどういう意味ですか?
同じセクションの後半で、次のことが文書化されています。
もちろん、これは完璧ではありません.Promiseがしばらくぶらぶらしていた後、何らかの理由でコードが急いでエラーハンドラーをPromiseに添付する必要がある場合、迷惑なメッセージが表示されます. その場合、.done() メソッドを使用して、ハングしている例外をスローする必要があることを通知できます。-- Bluebird Readme # エラー処理
さて、私のユースケースは次のとおりで、上記の状況に遭遇したと思います。
を添付する promise を提供する関数を呼び出します
/li>.catch()
。内部的に、その関数は URL1 からコンテンツをロードし、コンテンツに基づいて URL2 からコンテンツを順番にロードします。
/li>このチェーンの 2 番目の promise が拒否された場合、エラーは最初に catch によって処理され、次に Bluebirds
Possibly unhandled error
ハンドラーによっても処理されます。
この最後の動作は望ましくなく、なぜこれを行っているのかわかりません。したがって、質問 2 は次のようになります。エラー ハンドラがアタッチされて実行されているにもかかわらず、Bluebird はエラーが「未処理」である可能性を考慮しているのはなぜですか?
どうやら、拒否が.catch()
. その場合、(引用されたドキュメントによると)「を使用して.done()
」解決する必要があります。
今、私はいくつかのことを試しましたが、このシナリオで「.done を使用する」方法がよくわかりません。.done()
( undefinedを返すのは役に立たず、私が.finally
-ing できなくなります。)
したがって、これは私.done()
の 3 番目と 4 番目の質問を紹介します。.finally()
編集1:バグを再現するためにいくつかのJSFiddlesを作成しました:
- Bluebird 1.0.5 を使用すると、バグが再現されます。
- 最新の Bluebird.js を使用するとバグが再現されます (現時点では)
- ベータ バージョン 0.10.0-1 を使用 しても、バグは再現されません。
編集 2:開発者はバグを修正しました。
javascript - for ループで promise の配列に promise を追加する
次の例を想定してみましょう。
次のことを実行できないのはなぜですか。
約かかります。2500ms ですがconsole.log('done')
呼び出されません。何が問題なのですか、私は間違っていますか?
最高、redshark1802
javascript - Bluebird.js で "怠惰な" 約束をすることはできますか?
then
実行する前に呼び出されるまで待機する約束が必要です。つまり、実際に を呼び出さないとthen
、promise は実行されません。
これは可能ですか?
javascript - Bluebird promise ライブラリ: .map と .filter は並行して実行されますか?
bluebird promisesfs
に一連の非同期呼び出しを書き込もうとしています。パフォーマンスが心配であることを除けば、すべてうまく機能します。and関数が並列で実行されているのか、順次実行されているのかわかりません。これが私のコードです:.map
.filter
への呼び出しは特に気になります。onlyDirs
これは、一連の非同期fs.stat
呼び出しを行っており、並行して実行できる/実行する必要があるためです。私は彼らのAPIドキュメントを見てみましたが、並列化については何も見ませんでした.
注: 私は現在、ECMAScript6 ジェネレーターを使用する立場にありません (残念ながら)。
また、ここでのパフォーマンスに関するその他の指針は大歓迎です。
promise - 安全なコード ブロックでの Bluebird による進行
安全で、progress() にアクセスできるコード ブロックを Bluebird 内に作成したい - これは可能ですか:
私が望むことを行う1つの方法は、例外ハンドラーを使用することです-しかし、私はそれなしで解決策を探しています:
また、ドキュメントによると:
Promise.defer の使用はお勧めできません。 new Promise を使用するよりも扱いにくく、エラーが発生しやすくなります。
だから私はこれを行うことができます:
しかし、私はそれを進める方法がありませんか?
ありがとう、
ecmascript-harmony - Co.js と bluebird.js -- 違いは何ですか?
Koa.js と Bluebird.js を ES6 Harmony で使用することの違いを理解するのを手伝ってくれませんか。具体的には、どのように
と比較して、
Koa は、ホイールを再作成するのではなく、Bluebird を使用する必要があるようです。何が違うの?