問題タブ [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.
c++ - pthread_once() の競合状態?
std::future
別のスレッドで設定されるのを待っているスレッドがありますstd::promise
。
編集: 永久にブロックする模範的なアプリで質問を更新しました:
更新:代わりにa を使用するpthread_barrier
と、以下のコードはブロックされません。
これを説明するテストアプリを作成しました:
非常に基本的に、クラスは実行関数に aを設定するa をfoo
作成し、コンストラクターでそれが設定されるのを待ちます。設定すると、カウントがインクリメントされますthread
promise
promise
atomic
foo
次に、これらのオブジェクトの束を作成し、それらを破棄して、自分のcount
.
これを 1000 スレッドのループで実行すると、競合が発生するまで数回実行するだけでfutures
済み、そのうちの 1 つが起動されないため、アプリが永久に動かなくなります。
私SIGABRT
がアプリになった場合、結果として得られるスタック トレースは、future::wait
スタック トレースは以下のとおりです。
私は自分のコードで何も悪いことをしていないと確信していますよね?
これは pthread 実装の問題ですか、それとも std::future/std::promise 実装の問題ですか?
私のライブラリのバージョンは次のとおりです。
java - Play で複雑な promise を構築する
メソッドから promise を返す必要があるとします。これは、外部リソースといくつかの計算に依存します。私が想像しているのは次のようなものです:
何に使えcallWhenReady
ますか?これは基本的にはjQuery.promise()
振る舞いと同じです。
c++ - std::promise とは何ですか?
私はC++ 11のstd::thread
、std::async
およびstd::future
コンポーネント(たとえば、この回答を参照)にかなり精通しています。これらは簡単です。
std::promise
しかし、それが何なのか、何をするのか、どのような状況で最もよく使われるのか、私にはよくわかりません。標準ドキュメント自体には、そのクラスの概要を超える多くの情報は含まれておらず、std::threadも含まれていません。
誰かstd::promise
が必要な状況と、それが最も慣用的な解決策である状況の簡単で簡潔な例を教えてください。
jquery - 各()との関数でのjQueryの約束
自分の関数を呼び出して、終了するまで待ちます。トランジションが終了したら、次の機能を開始したいと思います。私のjsfiddlehttp://jsfiddle.net/hrm6w/をご覧ください。
console.log( "upperfinished")はconsole.log( "promisefinished")とすべてのアニメーションが終了した後に開始する必要があります。
そして、各オブジェクトのすべてのアニメーションが終了した後、次のアクション(関数)を開始したいと思います。
必要なのはpromise()関数だけだと思いますが、これが機能しません。
どんな助けでもいただければ幸いです。
node.js - Qを使用してnode.jsプロミスチェーンを適切に中止するにはどうすればよいですか?
多くのステップがあるシナリオで「運命のピラミッド」を回避するために、Node.jsのQモジュールを使用しています。例えば:
基本的に、これは機能しているようです。いずれかのタスクステップでエラーがスローされた場合、それはコールバックに渡されます(ただし、node.jsの約束は初めてなので、改善を歓迎します)。ただし、タスクチェーンを早期に中止する必要がある場合は問題があります。たとえば、result1が正常に返された場合、コールバックを早期に呼び出して残りを中止したい場合がありますが、そうしようとしても失敗します...
この例では、両方の「中止」が表示されます。と「ステップ3を実行しています...」が印刷されます。
私はここでいくつかの基本原則を誤解しているだけだと確信しているので、助けていただければ幸いです。ありがとう!
jquery - 「最後の1つが勝つ」jQuery-Ajaxキューを構築するにはどうすればよいですか?
ページに3つの要素があると仮定します。
- 数値の連絡先IDを受け入れるテキストボックス。
- クリックすると、テキストボックスに入力された連絡先IDの連絡先情報を取得するようにサーバーにAjaxリクエストを送信するボタン。
div
サーバーから取得した連絡先情報を表示するA。
ここで、さらに2つのことを想定します。
- サーバーからの往復には5秒かかると予想されます。
- 5秒間の遅延中に、ユーザーがテキストボックスに別の番号を入力してボタンをクリックした場合、Webページは最初のajax結果を無視し、2番目の結果(つまり、最新のAjax要求)を尊重する必要があります。
私の質問:
- 私が説明したように、「最後の1つが勝つ」jQuery-Ajaxキューをどのように実装できますか?
- この問題を解決するために、遅延オブジェクトを使用しますか、それともPromiseオブジェクトを使用しますか?
javascript - jQuery .promise() を使用して clearInterval() を呼び出す
私は最近、独自のカスタム効果を作成するために、setInterval と clearInterval を使って多くの実験を行っています。私が取り組んでいることの 1 つは、グローバル スコープの外にとどまりながら間隔をクリアする効率的な方法です。.promise() を使用して clearInterval() を呼び出すことで、読みやすさを改善し、パフォーマンスの向上の可能性を探っています (以下は、私がやろうとしていることの例です)。
最近まで、組み込み関数を使用して間隔を設定およびクリアしていました (例):
PS オリジナルを投稿できなくて申し訳ありません。バージョン管理システムが破損していました。また、for ループや .each() を簡単に使用できるため、この例がばかげていることはわかっていますが、これは単なる例です。ループを使用したくない場合もあります。
これは私の最初の投稿なので、受け入れられている慣習とは異なることをする場合は、事前にお詫び申し上げます。今後投稿を改善するためにできることがあれば教えてください - 私はいつでも建設的な批判を受け入れます :)
ありがとう!
c++ - Deferred/Promise pattern in C++
I've recently discovered, and fallen in love with, the Deferred/Promise pattern used in jQuery. It just encapsulates so many async use cases, including the wonderful chaining, filtering ability, that I can't believe I missed it for so long.
I've just finished refactoring my AS3 code to use the excellent CodeCatalyst/promise-as3 library (https://github.com/CodeCatalyst/promise-as3), and so started thinking about going back to my C++ code and seeing how I could implement the pattern there.
Before I started coding this myself, I checked to see if it had been done before, and discovered the std::future
/std::promise
(and boost equivalents), but they are very heavy (they seem use real threads etc, and have a heavy template syntax).
So, my question is: Is there are lightweight, pure C++ implementation of the Deferred/Promise pattern, jQuery-style?
refs:
javascript - 複数の非同期関数を連鎖させる
序章
私はこれから来る質問があります:
promisesのようなパターン(SDKで開発されたアドオンのjsdeferredライブラリ)を使用して非同期関数を呼び出すループを取得したら。
新しい非同期関数をこのリクエストにチェーンしたいと思います。たとえば、ブラウザのタブを開きます。準備ができるまで実行を続行したくありません。
問題
だから私はこれに到達します:
そして、私が得た結果は、ループの反復ごとに、以前のすべての要求を再度実行することです!そのため、コンソールに次のログが表示されました。
明らかに私が期待したのは:
質問
私が約束のパターンを理解していないことは明白です。私は2つのAPIでたくさん読みました:
1つ目は今まで使っていたものです。2つ目は、ライブラリを要求しようとするとエラーが発生します。
ですから、私の質問は、promiseの優れたチュートリアルや、複数の非同期関数のチェーンに関する優れた例を知っているかどうかです。または、それを行う方法を知っている場合、どのようにそれを行いますか。
ありがとうございました
編集:行(+)を与えるエラー
javascript - Jquery Promise のチェーン
私は単純な一連のイベントを持っています:
- メタデータ テーブルから列を取得する (非同期)
- 選択した列をロードする (非同期)
- レンダリング リスト
以前はこれらの関数を連鎖させ、それぞれが完了すると次の関数を呼び出していました。ただし、何が起こっているのかはあまり明白ではありません (呼び出すgetColumnsFromMeta
と、ビューが取り込まれます)。したがって、明確さとコードの再利用のために、これらを使用してリファクタリングしたいと思いJQuery
Promises
ます。私は以前にプロミスを使用しました。しかし、どうすれば 2 つ以上連鎖させることができるでしょうか?getColumnsFromMeta ().then(loadSourceFromDatabase /*some arguments*/) //.then(renderList)?;
の例を次に示しgetColumnsFromMeta
ます。