我搜索了很多网站以获得顺序回调的方法,这是第二个函数应该只在第一个函数完成后执行。在我的情况下,我正在按钮单击更新节点的一些属性,每个属性更新应执行单个回调。我的问题是,一些属性更新是基于以前的属性,我无法实现这一点..因为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);
}
答案 0 :(得分: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...";
答案 1 :(得分:0)
这取决于您的第一个回调函数的工作方式。 JavaScript实际上并不是一次执行,它在一个线程中顺序执行。如果你的第一个回调在一系列命令中完成所有工作,那么下一段代码只有在完成后才会开始执行。
例如:
var a = 0;
function fun1() {
a = 1;
}
function fun2() {
alert(a);
}
fun1();
fun2();
将给出与以下相同的结果:
var a = 0;
a = 1;
alert(a);
因为fun2
将在fun1
执行完毕后执行。