問題タブ [deferred-execution]
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 - WebKit以外のブラウザでのJavaScript実行の延期
JavaScriptの実行を延期するためのRyanFioravantiの巧妙なテクニックを試しています。これは、Google I/Oでの彼のプレゼンテーションのスライド27とスライド28で説明されています。
script
WebKitブラウザーでは、それはうまく機能し、ページの下部にタグを配置したり、async
属性 を使用したりするよりも、かなり良い結果を提供します。
ただし、FirefoxまたはIEでは機能しません。Firebugでは、スクリプトがDOMに挿入されていることがわかりますが、Firebugでは、スクリプト自体が実行されていないこともわかります。
この問題は、のような外部スクリプトとのような<script src="..."></script>
インラインスクリプト の両方で発生します<script>//inline code goes here</script>
。
誰かがこのテクニックをWebKit以外のブラウザで動作させるようになりましたか?
問題を再現するための関連するソースコードは次のとおりです。
linq - 執行猶予に関する疑惑
私がこれを持っているとしましょう:
StructsTemp に n 個のクエリを作成して、DB から入力するようにしました。後で、次のように呼び出して実行します.ToList()
。
後で私がこれを行うとどうなりますか?
StructsTemp で n 個のクエリを再実行しますか? これは StructsTemp.ToList() を再実行しますか? これにより、StructsFinal ですべてのクエリが再実行されますか?
javascript - $ が利用可能になるまで関数を遅らせる
Yahoo は、パフォーマンス上の理由から、HTML ページの下部にスクリプトをロードすることを提案しています。ルールを尊重する HTML5 ボイラープレートを使用します。
このアプローチの問題点は、jQuery も下部にロードされることです。何らかの理由で jQuery コードを含むインライン JavaScript を記述する必要がある場合$
は、名前空間でまだ使用できないため、できません。
これは、たとえば、次のマークアップを必要とする gallery.js (jQuery 画像ギャラリー エンジン) で発生します。
jQuery は後でロードされるため、高さを設定するコードは#gallery
機能しません。Firebug コンソールは次のようになります。
名前空間でシンボルが見つかる<script>
まで、ブロックの実行を後押しするためのヒントはありますか?$
c# - 延期された実行と延期された**データソース**の評価
私は延期された実行とそのすべてのジャズの大ファンですが、今では少し異なる問題が発生しました。
StartTimeでソートされた現在のマシンで実行されているすべてのプロセスを単純に表示するプロセスモニターの次の最初のナイーブな実装について考えてみます。
(注:これEval.TryEvalOrDefault<T>(Func<T> f)
は、例外をスローして代わりに返す可能性のあるものを評価するために使用する単なるヘルパーメソッドですdefault(T)
)。
ここで重要なのは、データソースが評価されるのは1回だけで、正確にはクエリの作成時です。
そして、はい、私は知っています、私はそれを何度も繰り返し作成し続けるメソッド内にこのクエリ定義をラップすることができますが、私のポイントはデータの評価を行うためのある種の巧妙なトリックを取得することであることがわかると思います-クエリが実行されるたびに動的なソース。
return - C++ での遅延実行戦略
不明なサード パーティがコード内の関数ポインターを呼び出すコールバック実装があります。
ただし、多くの言語の問題は、関数が戻った後にコードをトリガーすることです。たとえば、コールバックが呼び出され、呼び出し元のオブジェクトを削除する (この場合は再初期化する) 必要がある場合、コールバックから戻ると例外が発生します。
フックできず、コールバックを呼び出すコードを所有していない/変更できないと仮定すると、関数が戻った後にコードを実行する最良の方法は何ですか?
これを実行する唯一の現実的な方法は、ある種のステート マシンをセットアップし、ワーカー スレッドに状態をチェックさせることです。ただし、これに伴う問題は競合状態の問題であり、リセット コールバックが返されてから、呼び出し元のオブジェクトがリセットされるまでの間にコールバックが呼び出されます。
私が認識していない種類の機能はありますか、またはこれがそのような結果を達成するための最も効率的な方法でしょうか?
c# - LINQの.ToList()または.ToArray()を使用する場合
このコードを実行した後:
次に、両方のUが同じTをラップしていても、'first1 == first2'はfalseと評価されます。まだテストしていませんが、.ToList()または.ToArray()をチェーンすることでtrueと評価できると思います。 Select()呼び出しに。
この単純な図よりもはるかに複雑な実際のコードでは、.ToList()または.ToArray()のどちらを追加するかを決定するために使用する経験則は何ですか?私の最初の考えは、複数回繰り返される可能性のある参照式か、潜在的な反復が明らかでない場合に安全にするために、結果が決して変わらない参照式のいずれかです。
jquery-deferred - jQuery-一連のajaxリクエストが失敗しても完了するのを待つ延期
多数のajaxリクエストがすべて完了した後、それらが成功したかエラーが発生したかに関係なく、関数を実行するにはどうすればよいですか?
私は$.when.apply(this, array)
、延期されたjqXHRオブジェクトの配列を渡すために使用しようとしてきました。しかし、ドキュメントが言うように
Deferredの1つが拒否された複数のDeferredの場合、jQuery.whenはすぐにマスターDeferredのfailCallbacksを起動します。一部の延期は、その時点でまだ解決されていない可能性があることに注意してください。
jQueryの遅延オブジェクトを活用して、すべてのajax呼び出しが終了するのを常に待機するにはどうすればよいですか?
たぶん、他のすべての遅延をラップする独自の遅延を作成する必要がありますか?もしそうなら、私はそれを設定する方法がよくわかりません。
jakarta-ee - MDB の実行を特定の日付/時刻まで延期する
電子メール/IM/SMS を介してアナウンスを配信するために、Java EE 5 MDB 駆動の JMS システムを WebLogic 10.3.5 で実行しています。お知らせを配信する日付/時間枠を指定する必要があります。
私が知る限り、特定の日時に JMS メッセージを配信/実行するオプションはありません。
アナウンスのリストは DB テーブルにあるため、現在、2 分ごとにテーブルをポーリングし、そのウィンドウで新しいアナウンスのメッセージを JMS キューに送信する EJB 3.0 タイマー Bean があります。
それは機能しますが、DB テーブルのポーリングが、JMS 部分のように需要に合わせて拡張されないシステムの重要なポイントの 1 つであることは気に入りません。テーブルのステータス列でパーティション分割を行っていますが、それでも 2 つの日付で BETWEEN を実行しても、データが大きくなるとうまくスケーリングされません。
テーブルのポーリングを忘れて、指定された日付/時刻まで実行を延期するアナウンスの作成時に JMS メッセージを作成するだけのスケーラブルなソリューションを提案できますか? 重要なのは、延期された実行が永続的で、サーバーの再起動を存続させ、サーバーの再起動時に実行を自動的に「待機」し続ける必要があることです。
linq - この拡張メソッドはIQueryableを効率的に実現しますか?
そこで私は最近、式ではなく拡張メソッドにを指定するFunc<T, TResult>
ことで、EntityFrameworkがプロジェクションをSQLに変換しないように強制できることを発見しました。.Select()
これは、クエリされたデータを変換する場合に役立ちますが、その変換はデータベースではなくコードで行う必要があります。
たとえば、EF5の新しい列挙型サポートを使用してそれをDTOの文字列プロパティに投影しようとすると、失敗します。
これはうまくいくでしょう:
最初の(式)の場合、EFはStatus.ToString()をSQLデータベースが実行できるものに変換する方法を理解できないためですが、この記事のとおり、Func述語は変換されません。
これが機能するようになったら、次の拡張メソッドを作成することはそれほど大きな飛躍ではありませんでした。
だから私の質問は-これを使用するときに注意すべき落とし穴はありますか?パフォーマンスに影響はありますか?この何もしないプロジェクションをクエリパイプラインに挿入するか、EFが.Where()
句をサーバーに送信しないようにして、すべての結果をネットワーク経由で送信することによってですか?
.Where()
サーバー上の結果をフィルター処理するメソッドを引き続き使用することを目的としていますが、プロバイダーがプロジェクションをSQLServerに変換しようとしないよう.Materialize()
に前に使用.Select()
します。
c# - Windows フォーム アプリで保護されたメモリを読み書きしようとしました
序文として、このエラーを検索して一致したすべての StackOverflow の質問 (25 程度) を調べましたが、どれも私が抱えている問題に対処していないようです。
System.Windows.Form から継承する PermissionsDialog を構築しています。呼び出すメソッド内でdialogPermissions.ShowDialog()
、データベースからいくつかの Role オブジェクトを取得し、それらをいくつかの ListBox にロードしています。これは問題なく機能していましたが、次の疑似コード プロセスを使用して、リストボックスに追加している Role オブジェクトのプロパティの 1 つをオーバーライドする必要があります。
- ロールのリストを反復処理する
- を使用して、プロファイルのリストから一致するアイテムを検索します
List<T>.Find()
- プロフィールで物件を探す
- 新しいロールを構築し、必要に応じて Name プロパティを設定します
- PermissionsDialog のロールのリストにロールを追加します
これらはすべてスムーズに進みますがdialogPermissions.ShowDialog()
、基礎となるフレームワーク コードを呼び出すと、AccessViolationException がスローされます。
関連するコードであると私が信じているものは次のとおりです。
私の疑いでは、これはどういうわけか遅延実行の問題ですが、呼び出すToList()
前に dialogData.AllRoles を呼び出して実行をトリガーShowDialog()
しても問題は解決しません。profile.DisplayName を定数文字列に置き換えると、エラーは発生しません。
ここで何が起こっているのか、または何が起こっているのかを知る方法、または問題を回避できるように別の方法で問題にアプローチする方法の手がかりはありますか? すべての提案を歓迎します;-)
結論
実際の問題は次のとおりです。
Role の Name プロパティを null に設定することは問題ありませんが、ダイアログが Role から ListBoxItem を作成しようとし、ListBoxItem の Content プロパティ (オブジェクト) に Role.Name プロパティを使用する場合、それはできません。 null として設定され、ダイアログを構築しているフレームワーク コードでスローされます。そこに値があることを確認すると、問題が解決します。
スローする奇妙な例外のように思えますが、それがあります....