0

最初の関数の完了後にのみ実行する必要がある 2 番目の関数であるシーケンシャル コールバックを行う方法を得るために、多くのサイトをグーグル検索しました。私の場合、ボタンのクリックでノードのいくつかのプロパティを更新しています。各プロパティの更新は単一のコールバックを実行する必要があります。私の問題は、プロパティの更新の一部が以前のプロパティに基づいており、これを達成できないことです..javascriptがすべてを1つに実行するためです。

したがって、正しい方向に私を指摘してください..前のコールバックの完了後にコールバックを実行する方法.

前もって感謝します。

これが私のコードです:

function SetProperties() {
        var nodes = Control1.GetNodesList();
        var ColorStyle = {
            Color: 'Red',
            ForeColor: 'Maroon',
            ColorAlphaFactor: '255',
            ForeColorAlphaFactor: '255',
            Type: '2',                
            PathBrushStyle: '1'
        };

         var LineStyle = {                
            LineColor: 'Blue',
            LineWidth: '2'
         };

         Control1.SetColorStyle(nodes[0].FullName, ColorStyle);
         Control1.SetLocation(nodes[0], 150, 300);
         Control1.SetRadius(nodes[0], 20);
         Control1.SetShading(nodes[0], true);
         Control1.SetSize(nodes[0], 150, 150);
         Control1.SetLabel(nodes[0], label);            
         Control1.SetLineStyle(nodes[0], LineStyle);
    }
4

2 に答える 2

0

これは、最初のコールバック関数がどのように機能するかによって異なります。JavaScriptは実際には一度に実行されるのではなく、単一のスレッドで順番に実行されます。最初のコールバックが1つの一連のコマンドですべての作業を実行する場合、次のコードは、これが実行された後にのみ実行を開始します。

例えば:

var a = 0;

function fun1() {
    a = 1;
}

function fun2() {
    alert(a);
}

fun1();
fun2();

次と同じ結果になります:

var a = 0;
a = 1;
alert(a);

fun2実行終了後に実行されるためfun1です。

于 2013-01-10T13:31:14.753 に答える
0

理解していれば、ページに隠しフィールドを定義できます

<input type='hidden' runat='server' id='funToCall'/>

次に、JavaScriptでスイッチを作成できます

var funToCall=<% funToCall.Value %>;
switch(funToCall){
   case "fun1": Control1.SetColorStyle(nodes[0].FullName, ColorStyle); break;
   case "fun2": Control1.SetLocation(nodes[0], 150, 300); break;
...
}

そしてコードビハインドで、すべてのポストバックで呼び出す次の関数を定義します

funToCall.Value="next fun...";
于 2013-01-10T13:22:16.600 に答える