![](/img/trans.png)
[英]Call second JavaScript function with getJSON after first one is loaded
[英]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.