問題タブ [request-cancelling]

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

iphone - cancelPreviousPerformRequestWithTargetは、performSelectorで開始された以前に遅延したスレッドをキャンセルしません

を使用して遅延スレッドを起動しましたperformSelectorが、ユーザーは現在のビューで戻るボタンを押すことができ、deallocが呼び出されます。これが発生しても、スレッドが呼び出されているように見えます。これにより、スレッドが書き込もうとしているプロパティが解放されたため、アプリがクラッシュします。これを解決するためにcancelPreviousPerformRequestsWithTarget、前のリクエストをキャンセルするために電話をかけようとしていますが、機能していないようです。以下は、いくつかのコードスニペットです。

私はここで何か間違ったことをしていますか?このメソッドmyStopUpdatingLocationは、performリクエストを呼び出しているのと同じクラスで定義されています。

もう少し背景。私が実装しようとしている機能は、ユーザーの場所を見つけ、その場所の周りのいくつかの場所をグーグルで検索し、地図上にいくつかの注釈を表示することです。で場所の更新viewDidLoadを開始しCLLocationManagerます。タイムアウト内に希望の精度が得られない場合は、6秒後にタイムアウトを組み込み、これを行うためにを使用しperformSelectorています。ユーザーがビューの[戻る]ボタンをクリックすると、すべてのプロパティが解放されてもこのスレッドが実行され、クラッシュが発生する可能性があります。

前もって感謝します!

ジェームズ

0 投票する
6 に答える
411 参照

c# - 深くネストされたプロセスをキャンセルする方法

「マネージャー」のようなクラスのクラスがあります。その機能の1つは、クラスの長時間実行プロセスをシャットダウンする必要があることを通知することです。これは、クラスに「IsStopping」というブール値を設定することによって行われます。

さて、DoWork()は巨大な関数でした、そして私はそれをリファクタリングすることに決めました、そしてプロセスの一部としてそれのいくつかを他のクラスに分割しました。問題は、これらのクラスの一部には、isStoppingがtrueであるかどうかをチェックする必要がある長時間実行される関数もあることです。

ここでの私のオプションは何ですか?

isStoppingを参照で渡すことを検討しましたが、外部オブジェクトが必要なため、あまり好きではありません。私は、追加のクラスを可能な限りスタンドアロンで依存性のないものにすることを望んでいます。

isStoppingプロパティを作成してから、内部クラスをサブスクライブできるイベントを呼び出すことも検討しましたが、これは非常に複雑に思えます。

もう1つのオプションは、.net 4タスクが使用するものと同様の「プロセスキャンセルトークン」クラスを作成し、そのトークンをそれらのクラスに渡すことでした。

この状況にどのように対処しましたか?

編集:

また、MoreWorkには、実行時間の長い可能性のあるメソッドをインスタンス化して呼び出すEvenMoreWorkオブジェクトがある可能性があることも考慮してください。私が探しているのは、呼び出しツリーの下にある任意の数のオブジェクトに信号を送って、実行中の処理を停止し、クリーンアップして戻るように指示できる方法だと思います。

EDIT2:

これまでの回答ありがとうございます。使用する方法については実際のコンセンサスがないようで、誰もが異なる意見を持っています。これはデザインパターンのようです...

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

c# - BackgroundWorker を一時停止するにはどうすればよいですか? または似たようなもの

を使用して、ループ内でBackgroundWorker呼び出していくつかの Web サイトをダウンロードしていました。WebClient.DownloadStringユーザーがダウンロードの途中でキャンセルできるオプションが欲しかったので、ループの途中でオンになってCancelAsyncいることがわかったときにいつでも電話しました。CancellationPending

DownloadStringしかし、関数が時々フリーズすることに気づいたので、DownloadStringAsync代わりに使用することにしました (これはすべて、で作成された他のスレッド内にありますBackgroundWorker)。そして、 を呼び出した後にループと関数を終了しなければならないことでコード全体を書き直したくないので、 をDownloadStringAsync呼び出した直後に while ループを作成しましたbool StopDownloadStringCompletedが呼び出されたとき、またはユーザーが操作のキャンセルを要求したとき。

さて、奇妙なことは、デバッグ バージョンで正常に動作することです。しかし、リリース 1 では、メイン スレッドであるかのように while ループでプログラムがフリーズします。

0 投票する
12 に答える
94655 参照

jquery - jQuery - フォームの送信をキャンセルします(「return false」を使用しますか?)?

フォームの送信をキャンセルしようとしているときに、少し問題が発生しています。私はこのチュートリアルに従っています (ログインスクリプトを作成していませんが)、彼にとってはうまくいっているようです。

これが私のフォームです:

そして、ここにjqueryがあります:

私はすでにヘッダーにjQueryをインポートしており、それが機能していることを知っています。最初は時代遅れかもしれないと思っていましたが、実際には「ちょうど」1年前です。

それで、誰かが何が悪いのか分かりますか?

前もって感謝します。

編集:私が読んだことから、送信を中止する最も簡単で適切な方法はfalse を返すことですか? しかし、私はそれを機能させることができないようです。フォーラムを検索したところ、役立つスレッドがいくつか見つかりましたが、実際には機能していません。何かを台無しにしているに違いない。

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

java - Java サーブレットからのダウンロード中にユーザーがキャンセルを押したかどうかをどのように判断できますか?

Java サーブレットからのダウンロード中にユーザーがキャンセルを押したかどうかをどのように判断できますか? 出力ストリームの println() ブロックである IE で何が起こっているように見えますか。ヒットキャンセルを使いましたが、これをタイムアウトさせる方法などはありますか?

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

iphone - iPhone - cancelPerformSelectorWithTarget が機能しない

UIView のサブクラスでこれを行う場合:

次に、次のようにキャンセルします(両方のバージョンを試しました):

「doSomething」メソッドは引き続き呼び出されます。私は何を間違っていますか?

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

java - Javaスレッド:シャットダウンフラグとキャッチ例外

キャンセルを処理するスレッドでは、次のようなコードがよく見られます

私が知りたいのは、これであるか、なぜこれであるか、これを行うよりも優れている

私の見方では、後者の場合、shutdownvarをまったく気にする必要はありません。

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

ajax - 完了しない未解決の Ajax リクエストを正しくキャンセルする方法は?

この質問は、私が使用していない JQuery のコンテキストで質問されることを除いて、別の質問に似ています。

私のページのAjax コードは、 10 秒ごとに POST を発行します。時々、~600 リクエストごとに、クライアント コードが応答を待ってハングしますが、応答はまったく表示されません。

コードはタイムアウトになり、Ajax リクエストを再発行しますが、最初に、未処理のリクエストに関するすべてをクリーンアップしたいと考えています。

物事が適切に片付けられるように未処理のリクエストをキャンセルする正しい方法は何ですか?

ありがとう!

0 投票する
5 に答える
9119 参照

javascript - JavaScriptを使用してhttpリクエストをキャンセルする方法

イベントにイベント ハンドラーが関連付けられているページがありますonclickGETイベントが発生すると、テキストボックスの内容がリクエストに渡されます。URLが同じドメインにないため、スクリプトタグを作成し、このようにURLをソースに添付します

そのイベントが発生し、複数回前のGETリクエストをすべてキャンセルしたい場合(まだ応答を受信して​​いる可能性があるため)、GET最新のテキストでリクエストを行います。しかし、これには以前のリクエストをキャンセルする必要があります。私は試した

しかし、これは では機能しませんFirefox(私は を使用してFirefox 5います)Google Chrome


更新 Alfred が提案したように、以前window.stopはリクエストをキャンセルしていましたが、リクエストをキャンセルせずに電話を切りました。これは、firebug を調べると、リクエストが行われているように見えますが、応答がないことを意味します。

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

winapi - I/Oが重複しているTCP接続

I / Oが重複しているTCP接続要求を開始し、Windowsで接続が完了する前にキャンセルすることはできますか?少なくともWindowsXPSP2をサポートする必要があります。