我在home.page.ts内部创建了一个从AirVisual API检索json的方法,并将特定数据解析到home.page.html
但是,函数()中的代码似乎没有为全局变量分配任何值。
export class HomePage {
constructor() { }
aqi: string;
getAQI() {
var value;
var r = new XMLHttpRequest();
r.responseType = 'json';
r.open('GET', "http://api.airvisual.com/v2/city?city=Bang%20Rak&state=Bangkok&country=Thailand&key=30c3e5bd-32d3-4fdb-b2dd-fe36928850b5", true);
r.onload = function () {
var jsonResponse = r.response;
value = parseInt(jsonResponse.data.current.pollution.aqius);
console.log(value); // This print the value from JSON
}
r.send();
console.log(value); // This print undefined in console
this.aqi = String(value);
}
由于未定义函数外部的value
,因此aqi
也未定义。因此,我无法在html页面上使用它。
答案 0 :(得分:0)
您正在为.onload设置事件处理程序,但是您的getAQI函数将在r.send()之后继续本地执行并运行下一行。由于尚未发生onload并已对其进行处理,因此仍未定义。 onload()将在此之后发生。如果将断点放在onload函数内部和console.log行中,您应该会看到执行顺序。