Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅在加载其他函数时调用函数(JS/TS)_Javascript_Typescript_Ionic Framework_Callback_Ionic3 - Fatal编程技术网

Javascript 仅在加载其他函数时调用函数(JS/TS)

Javascript 仅在加载其他函数时调用函数(JS/TS),javascript,typescript,ionic-framework,callback,ionic3,Javascript,Typescript,Ionic Framework,Callback,Ionic3,我正在用Ionic Framework 3构建一个应用程序。我想知道是否只有在加载其他函数时才可以调用函数。我制作了我的代码的简化版本: getNumberOne() { //CODE TO GET NUMBER ONE// this.getGraph; //CAUSE I WANT TO LOAD MY GRAPH// } getNumberTwo() { //CODE TO GET NUMBER TWO// this.getGraph; //CAUSE I

我正在用Ionic Framework 3构建一个应用程序。我想知道是否只有在加载其他函数时才可以调用函数。我制作了我的代码的简化版本:

getNumberOne() {
    //CODE TO GET NUMBER ONE//
    this.getGraph; //CAUSE I WANT TO LOAD MY GRAPH//
}

getNumberTwo() {
    //CODE TO GET NUMBER TWO//
    this.getGraph; //CAUSE I WANT TO LOAD MY GRAPH//
}

getOtherData() {
    getOtherDataOne() {
        //CODE TO GET NUMBER//
        this.getGraph; //CAUSE I WANT TO LOAD MY GRAPH//
    }

    getOtherDataTwo() {
        //CODE TO GET NUMBER//
        this.getGraph; //CAUSE I WANT TO LOAD MY GRAPH//
    }
}

getGraph() {
   //CODE TO LOAD THE GRAPH//
}
在我的示例中,函数“getGraph”被激发了4次,但在我的实际代码中,它激发了42次。您需要知道的另一点是,每个函数都没有链接。我的意思是getNumberOne()不一定会成功,因为如果它没有得到一个数字,那么它将返回一个错误

这就是为什么我不认为我不能像这样把函数放在函数中:

getNumberOne() {
/*Function to query*/
  .then((sucess) => {
    getNumberTwo() {
        /*Function to query*/
          .then((sucess) => {
            getOtherData() {
                getOtherDataOne() {
                        /*Function to query*/
                          .then((sucess) => {
                getOtherDataTwo() {
                        /*Function to query*/
                          .then((sucess) => {
                             this.getGraph; //CAUSE I WANT TO LOAD MY GRAPH//
                            });
                        }
                    });
                }
            }
        });
    }
});
}

getGraph() {
    //CODE TO LOAD THE GRAPH//
}

有没有办法优化这一点

您应该看看javascript中的承诺。特别是,似乎您希望在做某事之前等待多个承诺完成。你应使用:

async
函数和
await
只是写承诺的一种简化方式。因此,您可以将上述内容改写为:

async myAsyncFunc(){
    await Promise.all([getNumberOne(), getNumberTwo()]);
    this.getGraph();
}
编辑:

如果希望getNumberOne和getNumberTwo函数连续运行,只需执行以下操作:

async myAsyncFunc(){
    await getNumberOne();
    await getNumberTwo();
    this.getGraph();
}

您的代码库是否允许异步/等待?看来这是一个完美的解决方案。示例:const numberOne=await getNumberOne();const numberTwo=等待getNumberTwo()。。。const dataTwo=getOtherDataTwo();如果(dataTwo!==null){this.getGraph();}这是个好主意。我开始在网上搜索,但我不确定async/await是如何工作的。。。你能解释一下吗?太棒了!谢谢!:)干得好!但是,在调用resolve()之前是否可以停止代码?因为现在,即使getNumberOne()没有完全加载,GetNumberWO()也会启动。。。你能帮我吗?你想让它们连续运行吗?在这种情况下,请参见上面我的编辑。
async myAsyncFunc(){
    await getNumberOne();
    await getNumberTwo();
    this.getGraph();
}