問題タブ [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.
node.js - KoaのCoの代わりにBluebird?
Bluebird は、ジェネレーター/コルーチン関連の機能で Co と重複しているようです。Bluebird は並外れた速度性能を持つと信じられているため、議論のために (前述の重複前提が正しいと仮定して) Koa (Node.js コンテキスト) で Co を Bluebird に置き換えたい場合、Koa のパフォーマンスを低下させることなく簡単に実行できますか?機能性、もしそうならどのように?
(私の推測では、Koa は Co の上に構築されており、Co を明示的に公開していないように見えるため、実際には実行できないと思いますが、それをファサード化します。そのような置換は、jQuery を Bootstrap で別のものに置き換えるのと同じように思われます)
promise - Microsoft bing マップ API とモジュールの読み込みの問題
店舗ロケーターを構築し、require を介してカスタム モジュールをロードしています。カスタム モジュールは、Microsoft のルート案内と検索モジュールに依存しています。私はコールバック地獄が嫌いで、モジュールをプリロードして、すべてがロードされたらカスタム モジュールでプロミスとアクションを返したいと考えています。
Promise仕様にブルーバードを使用し、いくつかのアプローチPromise.method
を試しましたが、どれも機能していないようです。Promise.promisify
new Promise(function(resolve, reject){Microsoft.Maps.loadModule({callback:resolve})})
私の最新の実装:
その結果Uncaught TypeError: Cannot read property '_tryFollow' of undefined bluebird.js
、最新のコードまたはプロミス形式でモジュールをロードする疑似コードの例の明らかなエラーを誰でも指摘できますか。
javascript - JavaScript promise で非同期操作をヒントする方法は?
学習目的で、プロミスが JavaScript でのデータベース操作の時間依存性を解決するのにどのように役立つかを示したいと思います。
だから、私はそれを示したい:
実際には舞台裏で時間を消費します。
この時間依存性と Promises が提供する可能な解決策をどのように説明できますか?
私がこれまでに持っているのはこれです:
javascript - いくつかのブルーバードの約束を約束にラップするにはどうすればよいですか?
db クエリによってバックアップされる redis クエリの非同期ラッパーが必要です。redis クエリが失敗した場合は、db クエリを作成したいと考えています。db クエリが成功した場合、返されたデータを redis に追加してから返したいと考えています。この関数は node.js 内から呼び出されるため、Promise を返すには関数 (できればオブジェクトのそのようなメソッドの 1 つ) が必要です。ブルーバードの約束ライブラリを使用しており、それを使用してredisを約束しています。これもブルーバードベースのdbにmongo-gyroを使用しています。これらはどちらもスタンドアロンで動作します。
特に疑似コードでさえ、どんな助けも深く感謝しています。誤った取り扱いで
};
更新: 以下の関数が機能し、最後に redis または mongo からのデータが表示されます。ただし、これを node.js ハンドラーに返される promise を返すクラスのメソッドに変換することにこれまで成功していません。注意 - データのソースをキャプチャするために「バインド」を追加する必要がありました
javascript - Promises/A+ の実装はどのように異なりますか?
仕様でカバーされていないpromise ライブラリの側面は? 実装間でどのような違いがありますか?
実際の違いの例を示してください (Bluebird と Q など)。
node.js - エラーを処理して Promise フローを続行する必要がある場合の Promise アプローチの改善
関数に次のロジックが必要です。
- パスポートを使用して Facebook でログインし、メソッドを呼び出して Facebook ID を持つユーザーを取得します。
- ユーザーが存在する場合は完了です。
- それ以外の場合は、メソッドを呼び出して、メールでユーザーを取得します。
- ユーザーが存在する場合は、Facebook ID でユーザーを更新する必要があり、完了です!
- ユーザーが存在しない場合は、メールと Facebook ID を使用してアカウントを作成する必要があります。
たとえば、Java では次のようになります。
Promises でそれを整理するにはどうすればよいですか? ブルーバードの約束を使用して次のようにしました:
「userService.update(user, ['facebook_account']);」を返すときだから間違っていると思います エラーをキャッチしてエラーを返す必要があり、ユーザーを作成しないでください。
sync ロジックから promise に変換する最良の方法は何ですか?
javascript - コールバック地獄を約束に変える方法は?
この例を考慮に入れる:
promise を使用してこの例を単純化する方法はありますか? すべてのメソッドが依存しており、次のような検証があることを確認してください。さらに、一意の場所if(models.length > 0)
にグループ化する必要があります。res.render
javascript - ノード コールバックとプロミスの両方をサポートするノード ライブラリを bluebird で作成する
ノード モジュールを作成しており、ノード コールバックと Promise API の両方をサポートできるようにしたいと考えています。私が最も良いと聞いているライブラリ (主に最速) はbluebirdです。したがって、いくつかのドキュメントを読み、bluebird を使用している他のライブラリを調べた後、ノード コールバックと Promise API の両方をサポートするメソッドを取得するには、これが最もクリーンな方法であると考えました。
ただし、このコードでは、コールバックは実行されません。さらに調査した後、私はこれを試しました:
このコードでは、ノード コールバックと Promise API の両方が機能します。
参考までに、これは isAllowed メソッドです。
最初のコード例で何か間違ったことをしているのですか、それとも 2 番目の例が探しているものを取得する実際の方法ですか?
timeout - promise の TimeoutError を事前にキャッチする
キャンセルできるブルーバードの約束があります。キャンセルされた場合、実行中のタスクを適切に中止するためにいくつかの作業を行う必要があります。タスクは 2 つの方法でキャンセルできます。promise.cancel()
またはを使用しpromise.timeout(delay)
ます。
タスクがキャンセルまたはタイムアウトになったときに適切に中止できるようにするには、CancellationErrors と TimeoutErrors をキャッチする必要があります。CancellationError のキャッチは機能しますが、何らかの理由で TimeoutError をキャッチできません。
タイムアウトが設定される前にタイムアウト エラーをキャッチするにはどうすればよいですか?
node.js - bluebird を使用してユーザー名を取得するには?
ブルーバードqを使用して、私はこれを持っています:
上記のコードの目的は、ユーザーの名前を取得して請求書に追加することです。これはうまく機能します。請求書のリストがある場合、すべての請求書の名前を取得して myBills に割り当てる方法は? ループを使用していますか?またはブルーバードには他のアプローチがありますか?