繁体   English   中英

完成JavaScript中的第一个回调后,如何执行第二个回调?

[英]How to perform the second callback after the completion first one in javascript?

我已经在很多网站上进行了搜索,以获取一种执行顺序回调的方法,即第二个函数仅在第一个函数完成后才执行。 以我为例,我正在单击按钮时更新节点的某些属性,并且每个属性更新都应执行一个回调。 我的问题是某些属性更新是基于以前的属性的,并且我无法实现此功能。因为javascript一次执行所有操作。

因此,请向我指出正确的方向..如何在完成之前的回调后执行回调。

提前致谢。

这是我的代码:

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);
    }

如果了解,您可以在页面中定义隐藏字段

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

那么您可以在javascript中创建switch

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...";

这取决于您的第一个回调函数的工作方式。 JavaScript实际上并不会一次全部执行,而是在一个线程中按顺序执行。 如果您的第一个回调在一系列命令中完成了所有工作,那么下一个代码段将仅在完成后才开始执行。

例如:

var a = 0;

function fun1() {
    a = 1;
}

function fun2() {
    alert(a);
}

fun1();
fun2();

将给出与以下结果相同的结果:

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

因为fun2将在fun1完成执行后执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM