Javascript 仅在加载其他函数时调用函数(JS/TS)
我正在用Ionic Framework 3构建一个应用程序。我想知道是否只有在加载其他函数时才可以调用函数。我制作了我的代码的简化版本: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
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();
}