0

setInterval関数を使用して、一定の時間間隔で ajax 関数を呼び出すことができることを知っています。私が達成したいのは、次のようなものです:

while (true) //but obviously this while loop will block other code. I'd like it non-blocking
{   //if certain condition is met, call my ajax function.
}

したがって、基本的にコードはバックグラウンドで静かに待機し、リッスンする必要があります。特定の条件が満たされた場合、ajax 呼び出しを起動します。

jquery/javascriptで可能ですか?

編集:条件について:基本的に、大きなテーブルの行を自動的にスクロールします(これは別の質問、別の投稿です...)。最後の行に到達すると、条件が満たされ、ajaxが呼び出されてデータが取得されますサーバー、テーブルに再入力し、自動的にスクロールを再開します。

4

2 に答える 2

1

Javascript では、条件はそれだけで「満たされる」わけではありません。

これは (ほとんどの場合) シングル スレッド言語であり、UI スレッドはイベントが発生するのを待っているだけであり、それに応じて、プログラマーが提供するイベント ハンドラーが何かを実行します。彼らが何かをしている限り、UI スレッドはそれ以上のイベントを処理できません。

これが、ビジー ループを使用したり、タイトなループで長時間の計算を実行して CPU を拘束したりしてはならない理由です。

要約すると、条件をポーリングする必要はありません。何らかのイベントが発生して true になることを許可するため、その条件が true になると明らかになるはずです。

その後、そのイベントの handler でAJAX リクエストを開始できるはずです。


EDITスクロールがテーブルの最後に達したときにこれを行うことを明確にしました。

上記のように、(もちろん)何かがスクロールしたことを知らせるイベントがあり、どこまでスクロールしたかがわかります。

見るhttp://api.jquery.com/scroll/

そのイベントのハンドラーを登録してから、そのハンドラーでAJAX 呼び出しをトリガーする必要があります。

于 2012-07-13T14:39:43.293 に答える
0

イベントがあればもちろん可能です。次に、ハンドラーをそれにアタッチできます。質問は次のとおりです。どのような状態ですか?

于 2012-07-13T14:35:21.940 に答える