Typescript 中的流程控制
Control of flow in Typescript
我正在尝试调用一个将从存储对象中检索数据的函数。
我需要这样做并在调用下一个函数之前分配返回的存储值,该函数也有一个asyncrounus函数。这是第一个函数调用:
getUnits(){
this.storage.get('units').then((val => {
if (val != null){
this.units = val;
console.log("Settings.TS: #28 Got units : " + this.units);
}else{
this.units = "metric";
console.log("Settings.TS: #31 No saved units found, assigning metric.")
}
}));
第二段代码是在上面的getUnits()之后直接调用的:
this.getUnits();
console.log("WEaTHER.TS Getting City Weather...city / country = " + city + " / " + country);
if (country != null || country != ""){
city = city+","+country;
console.log("WEATHER.TS: coutry code enterView, city = " + city + " and units: " + this.units);
}
//https://api.openweathermap.org/data/2.5/weather?q=Dublin&appid=4f91a3e665c56d59e4c7d9045d38e85a
const weatherJSON = "https://api.openweathermap.org/data/2.5/weather?q="+city+"&units="+ this.units + "&appid="+this.appid;
console.log("WEATHER.TS Getting this API call : " + weatherJSON);
return this.http.get(weatherJSON);
执行代码时,控制流在两个函数之间来回传递,因为它们是异步的。
我的问题是无论如何我可以保证函数 A 在紧随其后的 close 块执行之前完全执行?
对于异步函数,如果要确保仅在函数 A 完成执行后调用函数 B,请在函数 A 的 then
块中调用函数 B。例如,在您的情况下,它将像这样
getUnits(){
this.storage.get('units').then((val => {
if (val != null){
this.units = val;
console.log("Settings.TS: #28 Got units : " + this.units);
}else{
this.units = "metric";
console.log("Settings.TS: #31 No saved units found, assigning metric.")
}
//Call the second function here
}));
我正在尝试调用一个将从存储对象中检索数据的函数。
我需要这样做并在调用下一个函数之前分配返回的存储值,该函数也有一个asyncrounus函数。这是第一个函数调用:
getUnits(){
this.storage.get('units').then((val => {
if (val != null){
this.units = val;
console.log("Settings.TS: #28 Got units : " + this.units);
}else{
this.units = "metric";
console.log("Settings.TS: #31 No saved units found, assigning metric.")
}
}));
第二段代码是在上面的getUnits()之后直接调用的:
this.getUnits();
console.log("WEaTHER.TS Getting City Weather...city / country = " + city + " / " + country);
if (country != null || country != ""){
city = city+","+country;
console.log("WEATHER.TS: coutry code enterView, city = " + city + " and units: " + this.units);
}
//https://api.openweathermap.org/data/2.5/weather?q=Dublin&appid=4f91a3e665c56d59e4c7d9045d38e85a
const weatherJSON = "https://api.openweathermap.org/data/2.5/weather?q="+city+"&units="+ this.units + "&appid="+this.appid;
console.log("WEATHER.TS Getting this API call : " + weatherJSON);
return this.http.get(weatherJSON);
执行代码时,控制流在两个函数之间来回传递,因为它们是异步的。
我的问题是无论如何我可以保证函数 A 在紧随其后的 close 块执行之前完全执行?
对于异步函数,如果要确保仅在函数 A 完成执行后调用函数 B,请在函数 A 的 then
块中调用函数 B。例如,在您的情况下,它将像这样
getUnits(){
this.storage.get('units').then((val => {
if (val != null){
this.units = val;
console.log("Settings.TS: #28 Got units : " + this.units);
}else{
this.units = "metric";
console.log("Settings.TS: #31 No saved units found, assigning metric.")
}
//Call the second function here
}));