要在Aurelia应用程序的构造函数中等待数据,可以使用异步/等待模式。以下是一个示例解决方法:
import { inject } from 'aurelia-framework';
import { HttpClient } from 'aurelia-fetch-client';
@inject(HttpClient)
export class App {
constructor(httpClient) {
this.httpClient = httpClient;
this.dataLoaded = false; // 用于跟踪数据是否加载完成
this.data = null; // 存储从服务器获取的数据
this.loadData();
}
async loadData() {
try {
// 发送HTTP请求获取数据
const response = await this.httpClient.fetch('https://api.example.com/data');
this.data = await response.json();
this.dataLoaded = true; // 数据加载完成
} catch (error) {
console.error('Failed to load data:', error);
}
}
}
在上面的代码中,我们首先从aurelia-framework
中导入inject
装饰器和aurelia-fetch-client
中的HttpClient
类。然后我们在构造函数中注入了HttpClient
实例。
构造函数中的loadData
方法使用async
关键字来声明它是一个异步函数。在这个函数中,我们使用HttpClient
实例发送HTTP请求来获取数据,并将响应转换为JSON格式。然后,我们将响应数据存储在this.data
属性中,并将this.dataLoaded
属性设置为true
,表示数据已加载完成。
在构造函数中,我们调用loadData
方法来开始加载数据。因为loadData
方法是一个异步函数,所以它将在后台运行,而不会阻塞构造函数的执行。当数据加载完成后,我们可以在应用程序中使用this.data
属性来访问数据。
请注意,由于数据加载是异步进行的,因此在构造函数中使用this.data
属性之前,应该先检查this.dataLoaded
属性以确保数据已加载完成。