我有2个全局变量(左和右),当页面加载时设置为“”。我有2个函数,一个函数处理左右设置值,另一个函数依赖于第一个函数完成。
在正常条件下运行时,是否能够首先加载第一个功能。我已经编写了一些代码来尝试强制它,但它一直陷入无限循环:
var done = false;
function block() {
console.log("blocking");
loadSelected();
}
function loadSelected() {
ServerRun.getSource(AUTHTOKEN, function (a) {
theSource = a[0];
ServerRun.getObject(AUTHTOKEN, theSource, function (b) {
theObject = b[0];
ServerRun.getCounter(AUTHTOKEN, theSource, theObject, function (c) {
theCounter = c[0];
ServerRun.getAlerts(AUTHTOKEN, theSource, theObject, theCounter, function (d) {
leftSelected = d[0];
rightSelected = d[1];
console.log("Success!!!");
done = true;
});
});
});
});
if (done == false)
{
block();
}
console.log(done);
setCharts();
}
我需要阻止所有代码执行,因为很多其他方法都依赖于左边和右边的值。如何在loadSelected方法完成之前停止执行?我不确定以这种方式阻止它是否可靠。
答案 0 :(得分:1)
阻止执行通常是一个坏主意。
由于B依赖于A,因此您应首先运行A,然后通知B A具有所需的值。
你可以用两种类似的技术来做到这一点:
参考