問題タブ [promise]
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.
web-services - 1つのアクションで複数のWS呼び出し、Promiseオブジェクトを処理する方法は?
PlayFramework2 / Scalaで小さなサーバーを開発しました。このサーバーは、複数のWS(REST / JSON)からデータを取得し、これらのWSからデータを操作してから、作成して結果を返す必要があります。
1つのWSを呼び出し、データを操作して非同期応答を返す方法を知っています。しかし、いくつかのWebサービスを連続して呼び出し、すべての呼び出しの間でデータを処理し、集約された回答を生成する方法がわかりません。
例:
- WebServiceAからお気に入りの曲のリストを取得します
- 次に、曲ごとに、WS Bからアーティストの詳細を取得します(曲ごとに1回の呼び出し)
- 次に、 A応答とB応答を使用して、何か(たとえば集約リスト)を生成して返します。
- 次に、結果を返します
WS APIの非同期処理によってブロックされています(WS.url(url).get => Promise[Response]
)。この問題を解決するためにAkkaに頼る必要がありますか?
ありがとうございました。
jquery - $.ajax().done() に変数を渡す
道に迷いました。ループ変数を AJAX .done() 呼び出しに渡すにはどうすればよいですか?
明らかに、そうするなら、console.log(i+' '+data)
反復obj
ごとにオブジェクトの最後のキーを返します。ドキュメンテーションは私を失敗させます。
jquery - JQuery: 複数のオブジェクトをフェードアウトした後にフェードインするとちらつきが発生する
このプロジェクトには、いくつかの静的コンテンツ (タブを含む) と、さまざまな条件 (クリック、ホバー、タイマー) で変化するコンテンツを含むボックス (div) があります。これらの動的コンテンツ ビューはそれぞれ、個別の div にあります。
すべての動的コンテンツは最初はcssで隠されているため、ページの初期ロードを含め、これらすべてのケースを処理できる関数を作成しようとしています. この関数は、物事を追跡するために変更する必要がある親ボックスと、変更したいビューを受け取ります。
そこで、最初にすべてのビューをフェード アウトして何もないことを確認し、新しいビューをフェード インします。コールバックが順序通りに機能していないことにすぐに気付き、promise() 関数に出くわしました。残念ながら、これにより、私が試したすべてのブラウザー (IE、Chrome、および Firefox) でちらつきが発生します。Chrome ではごくたまにしかありませんでしたが、他の Chrome ではほぼ一定です。
それが現時点での私のコードのビジネス上の目的です。これを行うためのより良い方法、またはちらつきをなくす方法はありますか? 残念ながら、このページはほとんどの場合、動作の悪いブラウザで表示されます。
遅延で遊んだ後、問題はタイミングの問題であると思われます。要素を時期尚早に削除したり、別の要素を表示したりすると、最終的なレイアウトに到達するまでレイアウトが一時的に変更されます。promise() 関数がそのような遅延を実装していると思われます。
編集:
私にとってうまくいくと思われる解決策を見つけました。私の最初のフェードアウトは、複数のビューが何らかの理由で非表示になったイベントを処理することを目的としていたため (これは他の理由で頻繁に発生していました。mouseover と mouseout の代わりに mouseenter と mouseleave を使用してください)。以前の呼び出しからフェードの過程にあるものはすべて、通常のフェードを実行します。
それが理にかなっていることを願っています。フィルター機能を今まで知りませんでした。とても便利です:)
私の場合、これが機能するのは、これがコンテンツのいずれかが交換される唯一の方法であり、各呼び出しの最後に 1 つの要素ツリーのみが完全に表示される (またはそこに到達する) ためであることに注意してください。それが次のものまでに明らかにされていない場合、それはすぐに殺され、置き換えられます。
c++ - std :: asyncを独自のバージョンに置き換えますが、std :: promiseはどこに存在する必要がありますか?
私はvc2011を使用していますが、std :: async(std :: launch :: async、...)は少しバグがあります(新しいスレッドを生成せずに並行して実行する場合がありますが、代わりにスレッドを再利用しますタスクを次々に実行します)。高価なネットワーク通話をしているときは、これは遅すぎます。だから私は自分の非同期関数を書くと思いました。私は立ち往生していますが、std :: promiseはどこに住むべきですか?1)スレッド関数、2)非同期関数、または3)呼び出し元関数。
コード:
std :: promiseが非同期関数よりも長生きする必要がある(そしてスレッドが存続する限り存続する)必要があるという事実を乗り越えることができないようです。そのため、promiseは非同期関数のローカル変数として存続できません。ただし、呼び出し元は先物について知っているだけでよいため、std::promiseは呼び出し元のコードにも存在しないはずです。そして、非同期がスレッド関数を呼び出す前にfutureを返す必要があるため、promiseをスレッド関数で有効にする方法がわかりません。私はこれに頭を悩ませています。
誰かアイデアがありますか?
編集:トップコメントが少し誤解されているので、ここでこれを強調しています。std :: asycnのデフォルトは遅延モードであることが許可されていますが、std :: launch :: asyncの起動ポリシーが明示的に設定されている場合、スレッドが生成されて一度に実行されるかのように動作する必要があります(enの文言を参照) .cppreference.com / w / cpp / thread / async)。これがvs20011で見られる動作ではない1つのケースについては、pastebin.com/5dWCjjNYの例を参照してください。このソリューションはうまく機能し、実際のアプリケーションを10倍高速化しました。
編集2:MSがバグを修正しました。詳細はこちら:https ://connect.microsoft.com/VisualStudio/feedback/details/735731/std-async-std-launch-async-does-not-behave-as-std-thread
javascript - Mongooseコードをリファクタリングするために「q」モジュールを使用するには?
私はmongooseを使ってmongodbにデータを挿入しています。コードは次のようになります。
そこにはネストされたコールバックがたくさんあることがわかるので、qを使用してリファクタリングしようとしています。
コードが次のようになることを願っています。
しかし、私はそれを行う方法がわかりません。
javascript - なぜpromiseの「失敗」がエラーをキャッチしないのですか?
存在しない可能性のあるファイルにアクセスしようとしています。
ファイルが存在しない場合、「fail」メソッドが呼び出されますが、「ファイルが見つかりません」という例外を除いてアプリケーションが停止した後にのみ発生します。デバッガーに対して「続行」を押した場合にのみ、「失敗」メソッドに続行します。
私は何が間違っているのですか?事前に存在を確認する必要がありますか?
c++ - std::async は同じスレッドを使用し、私のコードは並列処理を実現しません。
Mac OS Xcode 4.3.2 std::async で C++11 を使用していますが、同じスレッドを使用しており、私のコードは並列処理を実現していません。以下のサンプル コードでは、10 個の新しいスレッドを作成します。各スレッドで、入力変数の平方根を計算し、結果を promise に設定したいと考えています。メイン関数では、スレッドから計算された結果を表示したいと考えています。ポリシーlaunch::asyncでstd::asyncを呼び出しているので、新しいスレッドが作成されることを期待しています(10回)。
ただし、std::thread を使用すると、並列処理を実現できます。
javascript - 私はいくつかの助けの約束とqライブラリが必要です
の構文について助けが必要node.js promises
です。node.js
q というモジュールの readme にhttps://github.com/kriskowal/qと書いてあるのがよくわからない。
なぜ彼らはいつもreturn
前に書くのpromise
ですか?
コールバックを使用して非同期関数を返す関数にするにはどうすればよいpromise
ですか? 私は試します
2000 年以降は 5 で警告する必要があると思いますが、何も起こりません。
javascript - Jquery.deferredの構文、同期関数がpromiseを返すようにする
Jquery.deferredを使用して、低速の同期関数が代わりにpromiseを返すようにする方法についての簡単な質問。私がこれまでにやったことはこれです:
sayIt(2000)は常に通過しますが、「then」の後の連鎖関数は起動しません。
私がこれを行う場合:
「ah」がすぐに表示され、2000ms後に「私が言うこと」が表示されます。もちろん逆です。2秒後に「私が言うこと」を取得し、その直後に「ah」を取得します。
どんな提案もありがたいです!
javascript - Throwing an Error in jQuery's Deferred object
I have an $.ajax
promise and want to check whether my (syntactically valid) response contains an error, triggering the rejected status in that case.
I have worked with my own promise library which deals such tasks easily. I do not really like jQuery's Promise (cache) implementation with its Deferred
object and may have overlooked something, because I seldom use it. I think the way to go is just using .then()
, which seems to be rather complicated:
This should return a promise which is rejected in case of network errors or problems with the response. But is returning a rejected deferred really the [only|best|shortest] way to go?
I also would appriciate help on how to deal with such "error-throwing response handlers" in the ajax options themselfes, I could not find good documentation about them.
Disclaimer: No, I cant change the server responses. The problem-detecting method is synchronous. I don't want to use other libraries, I'm particularly interested in the way jQuery solves this.