問題タブ [deferred]

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.

0 投票する
1 に答える
851 参照

python - ツイストPython:子プロセスからのデータを待機する遅延オブジェクトを作成するにはどうすればよいですか?

EchoプロトコルのlineReceivedメソッドでは、子に書き込むたびに遅延オブジェクトを生成したいと思います。結果を待ち、子プロセスによるデータの処理が完了すると、結果を出力します。私はそれをする方法を見つける必要があります。現在、MyPPの関数outReceivedは、子プロセスから結果を取得します。

ありがとうございました

0 投票する
2 に答える
8996 参照

jquery - 各()との関数でのjQueryの約束

自分の関数を呼び出して、終了するまで待ちます。トランジションが終了したら、次の機能を開始したいと思います。私のjsfiddlehttp://jsfiddle.net/hrm6w/をご覧ください

console.log( "upperfinished")はconsole.log( "promisefinished")とすべてのアニメーションが終了した後に開始する必要があります。

そして、各オブジェクトのすべてのアニメーションが終了した後、次のアクション(関数)を開始したいと思います。

必要なのはpromise()関数だけだと思いますが、これが機能しません。

どんな助けでもいただければ幸いです。

0 投票する
2 に答える
390 参照

javascript - 非同期コールバック チェーンで try catch ブロックを使用するよりも、例外を返す利点は何ですか?

Twisted のDeferredクラスHeavyLifters Deferred Libraryを見た後、前の結果の値がFailureクラスのインスタンスである場合、エラーバックが発生することに気付きました。これにより、エラーをスローするのではなく、エラーを示す特別なオブジェクトを返す特定の理由があるのではないかと考えました。

私が推測したことから、次の理由により、エラーをスローする方が良いと感じています。

  1. 任意の値をスローできます。
  2. スローされた値がキャッチされない場合は、コール スタックを伝播します。
  3. 特別なクラスFailureErrorクラスは必要ありません。
  4. これにより、コールバックが同期コードのように見えます。
  5. 例外は、コール スタックの任意のレベルで処理できます。

私が気づいたいくつかの欠点は次のとおりです。

  1. コードのブロックを試行してエラーをキャッチすると、コードのパフォーマンスが低下する可能性があります。
  2. 例外がキャッチされない場合、残りのコールバック チェーンの実行が停止します。
  3. 非同期プログラミングは、try catch ブロックの使用とは正反対に不可欠です。

私はオッズを比較検討し、このシナリオでエラーを報告するのに適した方法を見つけようとしています。

0 投票する
3 に答える
13563 参照

javascript - カスタムjavascript関数での成功処理

ajax呼び出しを行うと、成功処理を追加できます。カスタム関数に同様のロジックを追加したいと思います。

順次または独立して実行する必要がある6〜10個のカスタム関数があります。通常、これらは独立して実行されないため、前の関数の最後に次の関数を呼び出すことでデイジーチェーン接続しますが、読み取りが面倒で、個別に実行することはできません。

私はこのようなものが欲しいです:

カスタム関数に処理を追加したいという他の状況もありました.success()が、この状況はそれをより重要にしました。

6〜10個の関数を強制的に同期的に実行する別の方法がある場合は、この問題を解決できますが、カスタム関数に成功処理を追加する方法も知りたいです。

@lanzzの提案に基づいて次のことを試しました。

関数に追加.then()しました:

コードは正しくupdateGridRowの最後に移動し、エラーは発生しませんが、2番目の関数を呼び出すために戻ることはありません。

@Anandが提案したように、私も次のことを試しました。

これはうまくいきませんでした。

最終的な解決策deferredを使用してこの動作を実現する方法の詳細については、jQueryでのDeferredの使用を
参照してください。

0 投票する
2 に答える
1675 参照

javascript - dojo を使用してリクエスト/コールバックのチェーンをエレガントに構築する方法は?

私は Dojo をかなり使ってきましたが、完全には頭に入っていませんdojo.Deferred(少なくとも、利用可能なすべての機能を使用したわけではありません)。私はそれについていくつか読んでいて、次のシナリオが Deferred をよりエレガントなアプローチとして使用するのに適した場所になるかどうか疑問に思っていましたか? または、Deferred でない場合Promise、dojo で利用できる、またはより読みやすい/シーケンシャルな方法で以下を達成できる他の種類の連鎖手法はありますか?

もしそうなら、これはどのように見えますか?ここで Deferred をどのように使用しますか? どんな助けでも大歓迎です。

0 投票する
0 に答える
442 参照

jquery - jQuery.Deferred().done/fail/always/then のオーバーヘッド?

promise次のように、特定のことが解決されたことを確認したい場所がたくさんあります。

doneを呼び出しても約束が解決された上記のような数千の呼び出しが発生する可能性がありますgetData()。このような遅延コールバックを使用すると、オーバーヘッドはどのくらいになりますか?

私が見る限り、メモリにDeferred()基づいてjQuery.Callbacks()おり、解決または拒否されたプロミスにハンドラーを追加しても、コールバックがどこのキューにも追加されず、すぐに呼び出す (またはダンプする) ように見えます (最終状態)。しかし、このようにするのがベストプラクティスですか?

0 投票する
2 に答える
212 参照

javascript - How do I access a returned value from a .ajax request within the done() function

Here's my function which returns a name of a person.

And here is where I am attempting to use the .done() function.

I am confused on how to reference the returned value from my getName function within my done function.

I know I could do this using success: within the .ajax, but I am trying to move away from that and used deferred objects.

Thanks!

0 投票する
0 に答える
396 参照

c# - ディファード ライティングが FPS を台無しにするのはなぜですか? (2D)

ディファード ライティングが FPS を台無しにするのはなぜですか? マップの表示可能なスペースに約 20 ~ 26 個のディファード ライティングを配置しようとしましたが、fps が 61 から 28 ~ 31 に低下しました。

また、VGA の温度が 68°C から 72 ~ 73°C になります。2Dだからちょっと変な感じ。そして、私のFPSを半分にするのに、これだけの計算が必要だとは思いません。

したがって、基本的に、この方法がなぜそれほど費用がかかるのかわかりません。または、コードに問題があり、それを解決する方法はありますか?

また、これよりはるかに安価な、良い照明のための他の方法はありますか? ポイントライト?

私のコードは次のとおりです。

そしてシェーダー:

0 投票する
1 に答える
1615 参照

javascript - シーケンスの実行時/実行時のjqueryの競合状態?

私はapache、php、js/jqueryに基づいたWebアプリケーションを持っています。ドキュメントがロードされると、アプリケーションの1つのモジュールが初期化されます。このシーケンスは、いくつかのタスクを実行するinit()関数を呼び出します。特に、ajaxを介して2つのhtmlダイアログをフェッチし、それらを既存のページに挿入します。これらのダイアログへの参照は変数として保存されるため、スクリプト全体でjqueryセレクターを指定する必要はありませんが、代わりにこれらの変数を使用できます。フェッチされたダイアログ内の要素にハンドラーをバインドしようとしたときに変数が「未定義」である場合がほとんどないことを除いて、これは正常に機能します。それとは別に、ダイアログはアプリケーション全体で使用できるため、これは奇妙なことです。これは、ajax呼び出しが成功したことを示していますが、明らかに何らかの競合状態があります。バインドの試行後。

私の理解では、バインドはwhen()の.done()部分で行われ、ダイアログのajax取得がwhen()内で終了した後にのみ実行されるため、これは発生しないはずです。

どうやら私はここで基本的な何かが欠けています。誰かが私にヒントを得ましたか?

以下は、実際の実装からのコードの抜粋を引用しています。一部の部分として構文的に無効に見える場合がありますが、これは、ここでは関係のないコード部分が削除されたためです。短縮されていないコードは正常に機能します。

変数:

初期化シーケンス:

短縮されたinit関数:


ベルギの答えで、私はどうやら元の問題を取り除くことができました。これまで、失敗したバインドの試行を検出できませんでした。しかし、私はその提案に完全に従うことはできませんでした。彼の答えでは、直接割り当てを優先して、初期化メソッドのswitchステートメントを削除することを提案しました。これは確かにはるかにエレガントですが、それは機能しません。javascriptが変数に格納されている参照や関数をどのように処理するかについて、私の側には誤解がある印象があります。

たぶん、あなた、ベルギ、または他の誰かがこれについて説明する光を当てることができます:

これは、上から変更された初期化方法です。

真ん中には、割り当てステートメントがコメントアウトされており、現在、以下のswitchステートメントに置き換えられています。obj.elementなどのいくつかのバリエーションを試しましたが、失敗しました。関数の外では、変数Shorty.Tracking.Dialog.ListおよびShorty.Tracking.-Dialog.Clickは空のままです。

私はWebスタッフとjs/jqueryの完全な初心者です。しかし、私は確かに、参照を処理するこの方法についてもっと知りたいと思っています。

0 投票する
4 に答える
27504 参照

c# - List.AddRangeとIEnumerableパラメータが機能していませんか?

リストにいくつかのアイテムを追加したいという次のシナリオがあります...

このコードを使用すると、アイテムはリストに追加されませんが、Linqステートメントの後に.ToList()を追加すると、アイテムは正しく追加されます。これは実行の遅延によるものだと思いますが、List.AddRange関数がIEnumerableを受け入れると、追加するアイテムを列挙すると思います。

誰かがこれが起こる理由を片付けてもらえますか?