2012-04-30 6 views
1

私は持っていますGoToCell(number); この機能は、プレーヤーの動きをレンダリングします。 私はこのような状況が発生した:人は、呼び出しの最後の実行の前に2回この関数を呼び出します。 コールはドロップされ、2回のコールから実行を開始します。私は2つは、それを実装する方法ではない終わりまで動作していないと呼び出す必要がありますか?スレッドをjavascriptで

+5

スレッドはjavscriptでは不可能です。 –

+7

ここの人々はdownvoteの意味を知らない...このサイトは、レジスターの子供を停止する必要があります。 –

+1

なぜ質問が下落しているのですか? – Nadh

答えて

4

おそらく問題はスレッドとは関係ありませんが、アニメーションやムービーの再生が問題です。それは質問から伝えるのは難しいです。

しかし両方の場合の答えは、アニメーションや進行中のことを自分自身に伝えるフラグを設定し、そのフラグをクリアするために完了コールバックを使用することです。次に、ユーザーがウィジェットなどをクリックしたときにフラグをチェックして、アニメーションのその他のコピーをキックオフしません。

コードやコンテキストがなくても、具体的に手助けするのは難しいので、ここではjQueryアニメーションを使用した例を示します。 |

​​:私はちょうどは(完了コールバックを使用して、重複したアクティベーションを防止し、フラグを設定する)上記の概念を実証し、または何か「jQueryのを使用」とは言いませんよsource

HTML:

<input type="button" id="theButton" value="Click to animate"> 
<div id="target"></div> 
<div id="output"></div> 

CSS:

#target { 
    position: absolute; 
    left: 0px; 
    top: 3em; 
    border: 1px solid black; 
    background-color: #00d; 
    width: 20px; 
    height: 20px; 
} 
#output { 
    margin-top: 6em; 
} 

はJavaScript:

jQuery(function($) { 

    var animating = false; 
    var direction = "+"; 

    $("#theButton").click(function() { 
    // Are we already animating? 
    // (Of course, ideally you'd disable the button or similar) 
    if (animating) { 
     // Yes, say we're busy 
     display("Animation still in progress"); 
    } 
    else { 
     // No, do it 
     display("Animating..."); 
     animating = true; 
     $("#target").animate({ 
     left: direction + "100" 
     }, 3000, function() { 
     // Completion callback, we're not animating anymore 
     animating = false; 
     display("Done"); 
     }); 
     direction = direction === "+" ? "-" : "+"; 
    } 
    }); 

    function display(msg) { 
    $("<p>").html(String(msg)).appendTo("#output"); 
    } 

}); 
1

ウェブワーカーを見ることができます。 https://developer.mozilla.org/En/Using_web_workers

これまでのところ、javascriptではスレッドのような動作をする可能性があります。私はそれがすべてのブラウザで実装されているとは思わない。

1

私はあなたが探しているものを行うために労働者やスレッドが必要かどうかはわかりません。 IMO

Underscore's function for Functionsあなたは、アンダースコアを使用しない場合、私はあなたがライブラリのソースを読むことをお勧め、あなたがdebounceで探しているものを達成throttleまたはonce

を助けることができる、それはかなり短いですし、うまくコメントしました。

関連する問題