問題タブ [callback]

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 投票する
3 に答える
254 参照

javascript - それらがどのように構築されているかに基づいて、コールバックもクロージャーとして定義できますか?

JavaScript では、クロージャーは、それを含む関数の変数にアクセスできるネストされた関数として定義できることを知っています。例えば:

onreadystatechange次のコードは、リクエスト オブジェクトのプロパティのコールバックを接続しています。ただし、定義により、これもクロージャーと見なされるかどうか疑問に思っていました

このhandleResponse関数は のコンテキストで無名関数として記述することもできsubmitHandlerますが、コールバックをコールバックする関数のスコープ外でコールバックを定義すると、より複雑な Ajax コードをより読みやすく、簡単に保守できることがわかりました。繰り返しますが、これは私の質問の要点を単に示すことを期待して私が使用している不自然な例です。

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

visual-studio-2005 - 関数ポインターが Visual Studio 2005 で正しくない、コードが 1 バイト オフセットで始まる

問題のコードは explorer.exe にフックされますが、コールバック関数へのエントリでクラッシュしていました。

コールスタック:

Visual Studio 2005 では、次の逆アセンブリが行われました。

そして0x548B0CC4あたりのメモリはすべて?????? マップされたメモリではないため、クラッシュします。

myCallWndProcRetCallback の開始時のマシン コードは次のとおりです。

ただし、Visual Studio では、この関数に対して次の逆アセンブリが提供される場合もあります。

これは正しい逆アセンブルのように見えますが、上記の逆アセンブルよりも 1 バイト遅れています。0x60055B58 以降の命令は同じであることがわかります。

そのため、リンカは関数が 0x60055B50 にあると言っているように見えますが、コードは実際には 0x60055B51 から始まります。前者は Windows フックに設定されたコールバックであることを確認しました。そのため、Windows が関数にコールバックすると、不正なコードが実行されます。

私が持っている質問は、リンカーがこれをどのように誤解する可能性があるかということです? 再構築を行ったところ、問題はなくなりました。ランダムなようです。/FORCE:MULTIPLE リンカー オプションが有効であった時点で、このコールバックに対してリンク エラーは報告されません。

遅い追加: これは、DLL の再配置またはリベースに関連している可能性がありますか? 再配置が 1 バイトずれていた場合、これが問題の原因になる可能性がありますか?

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

c - VB コールバック関数を C dll に渡す - noob が動かなくなった

VB でのコールバック (C dll から)。

dll の ac 関数へのコールバックとして vb 関数を渡す必要があります。関数に addressof を使用する必要があることはわかっていますが、その方法についてますます混乱しています。

詳細:

コールバックのアドレスを渡す dll の関数は、C で次のように定義されています。

ここで、関数はパラメーター 7、*streamCallback です。タイプ PaStreamCallback は次のように定義されます。

私のvbプロジェクトには次のものがあります:

(他のパラメーターのいくつかを間違って入力しても心配しないでください。後で説明します。今はコールバックに集中しましょう。)

module1.vb で、コールバック関数を定義しました。

Function MyCallback( ByVal inp As Byte, _ ByVal outp As Byte, _ ByVal framecount As Long, _ ByVal pastreamcallbacktimeinfo As Byte, _ ByVal pastreamcallbackflags As Byte, _ ByVal userdata As Byte) As Integer ' ここで賢いことをする End Function

dll の外部関数は次のように呼び出されます。

これは、外部関数の宣言で壊れています - AddressOf の関数ポインタとして型 IntPtr が好きではありません。

このコールバック関数を渡す実装方法を教えてもらえますか?

どうもありがとうデビッド

0 投票する
8 に答える
208105 参照

javascript - JavaScriptのコールバック関数をよりよく理解する

関数をコールバックとして別の関数に渡して実行させることは理解していますが、それを行うための最良の実装を理解していません。私はこのような非常に基本的な例を探しています:

myFirstFunctionで、new callback()を返すと、匿名関数が機能して実行されますが、それは私にとって正しいアプローチではないようです。

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

javascript - 複数の引数を JavaScript コールバック関数に渡すにはどうすればよいですか?

Javascript コード:

問題は、関数 doSomething を次のように変更した場合です。

対応する行( としてマークされている//*.*)をSomeClassに変更する必要があります

(*.*)「doSomething」関数のパラメータ数をいくら変更しても行が変更されないようにするにはどうすればよいでしょうか?

どうもありがとう!

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

asp.net - 使用するもの: コールバック、AjaX、または Asp.net アプリの単純な Javascript

仕事に最適なツールが何であるかについて、私は少し途方に暮れています。

pop-up必要なもの:クリックすると親ページにリンクがgridviewあり、saveボタンが表示されます。

ユーザーが を保存した場合gridview、親ページが更新されて変更される必要があります。つまり、クライアントとサーバーの間でデータをやり取りできる必要があります。Saveおそらく、ボタンが からのデータをデータベースに保存することに言及する必要がgridviewあります。ポップアップを閉じて、親ページを更新したいと思います。

ASP.NET 2.0 を使用していますが、現在 AJAX ライブラリがインストールされていません。私は ASP.NET を見てCallBack、この場合は最も簡単に思えるので、それを使用する傾向がありました。

編集:おそらく、子ウィンドウが起動している間は親ページを非アクティブにしたいことにも言及する必要があります......

何を使用することをお勧めしますか? ありがとう!

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

asp.net - コールバックと asp.net gridview

次のような状況があります。グリッドビューがあり、行を動的に追加する必要があります。すべてがうまく機能し、ダンディです。しかし、最近、このプロセスをより速く、より使いやすくすることに興味を持っています。asp.net 2.0 で Callback 機能を見つけました。

gridview を使用して何かを表示する場合には意味があるようです。ただし、プログラムで行を追加するには、行を DataTable に追加する必要があります (これは gridview にバインドされています)。DataTable はサーバー上に存在するため、私が理解していることから、ここで Callback を使用しても意味がありません....

これは、主なものを概説する素晴らしいチュートリアルです。

手順 5 で:

「非同期読み込みを完了するには、手順 3 で実装した ICallbackEventHandler インターフェイスによって定義された 2 つのメソッドを実装する必要があります。メソッドの 1 つは、DataTable を GridView にバインドし、コントロールをレンダリングします。」

そのことから、ポストバックなしで gridview に行を動的に追加する方法がないことがわかりました....何か考えはありますか?

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

ruby - 真のsinatra(ruby/rack)after_filterの最速の方法は何ですか?

簡単な作業です。クライアントに html をレンダリングした後、リクエストからの情報を使用して db 呼び出しを実行したいと考えています。

私は軽量のマイクロフレームワークであるためsinatraを使用していますが、実際にはRubyのほうが高速/簡単(Rack?)である場合は何でも気に入っています。URLを取得し、そのURLに基​​づいてクライアントを別の場所にリダイレクトしたいだけです。

では、実際の after_filter で Rack/sinatra を使用するにはどうすればよいでしょうか。そして after_filter とは、応答がクライアントに送信された後を意味します。それとも、スレッドなしでは実行できないのでしょうか?

私はsinatraをフォークしてafterフィルターを追加しましたが、応答をフラッシュする方法はありません.send_dataファイルをストリーミングすると想定されていますが(これは明らかにバイナリ用です)、after_filtersを待ちます。

この質問を見たことがあります: Multipart-response-in-rubyですが、答えはレール用です。そして、それが本当にクライアントへの応答をフラッシュし、その後の処理を可能にするかどうかはわかりません。

Rack :: Callbacks には前後のコールバックがありますが、それらでさえ、応答がクライアントに送信される前に実行されるように見えます:

したがって、rake を使用してシェルを介してバックグラウンド タスクを呼び出すことができることを知っています。しかし、そうでないのはいいことです... また、NeverBlockがありますが、応答を遅らせることなく別のプロセスを実行するのに適していますか、それともアプリ全体を待機させますか(私はそうすると思います)?

これがたくさんあることは知っていますが、要するに、応答が ruby​​/sinatra/rack で送信された後に実際に実行される単純な after_filter です。

私の質問を読んだり、答えてくれてありがとう!:-)

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

c++ - バインドされたメソッドからの生の関数ポインタ

メソッドを関数コールバックにバインドする必要がありますが、 demote-boostfunction-to-a-plain-function-pointer で説明されているように、このスニペットは合法ではありません。

この動作を取得する最も簡単な方法は何ですか?