在javascript上强制阻止

时间:2015-11-18 17:26:14

标签: javascript

我有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方法完成之前停止执行?我不确定以这种方式阻止它是否可靠。

1 个答案:

答案 0 :(得分:1)

阻止执行通常是一个坏主意。

由于B依赖于A,因此您应首先运行A,然后通知B A具有所需的值。

你可以用两种类似的技术来做到这一点:

  • 回调:当A完成时,它会运行一个更新B
  • 的回调
  • Promises:A返回传递给B的承诺。当A完成时,承诺得到解决,B被更新。

参考