Javascript 获取数组对象类型脚本中的第一个索引
我想从下面的代码片段中的数组对象数据列表中获取索引零记录。我不熟悉JavaScript和TypescriptJavascript 获取数组对象类型脚本中的第一个索引,javascript,arrays,angular,typescript,ecmascript-6,Javascript,Arrays,Angular,Typescript,Ecmascript 6,我想从下面的代码片段中的数组对象数据列表中获取索引零记录。我不熟悉JavaScript和Typescript dataList: Array<any> = []; data: any; constructor(private apiService: ApiService) { this.apiService.getEncounterDashBoard(this.searchCond) .subscribe(data => { this
dataList: Array<any> = [];
data: any;
constructor(private apiService: ApiService) {
this.apiService.getEncounterDashBoard(this.searchCond)
.subscribe(data => {
this.dataList = data.result;
});
let labels = this.dataList[0];
}
dataList:Array=[];
资料:有;
构造函数(私有apiService:apiService){
this.apiService.getEncounterDashBoard(this.searchCond)
.订阅(数据=>{
this.dataList=data.result;
});
让labels=this.dataList[0];
}
你可以这样试试
dataList: Array<any> = [];
data: any;
constructor(private apiService: ApiService) {
let labels = [];
this.apiService.getEncounterDashBoard(this.searchCond)
.subscribe(data => {
this.dataList = data.result;
labels = this.dataList[0];
// here you can see that we are access the data inside the subscription block bcs javascript is asynchronous. So it is not wait complete the api call
});
}
dataList:Array=[];
资料:有;
构造函数(私有apiService:apiService){
让标签=[];
this.apiService.getEncounterDashBoard(this.searchCond)
.订阅(数据=>{
this.dataList=data.result;
labels=this.dataList[0];
//在这里您可以看到,我们正在访问订阅块内的数据,bcs javascript是异步的
});
}
将异步操作视为在其余操作之后发生的操作。
您的getEncounterDashBoard
被调用并启动请求,但您的代码中的所有内容都会继续,无论是否有响应(通常没有响应,因为所有内容都太快)
因此,您的let labels
正在尝试在您实际得到响应之前获取this.dataList[0]
。您可以做的一件事是创建一个组件范围的变量labels
,然后在异步函数的回调中(在subscribe
中)对其进行赋值,这样在异步函数解析后就会发生这种情况
另一个选项是创建一个函数,该函数处理异步解析后要发生的逻辑,并在subscribe
中调用它
afterDataList() {
let labels = this.dataList[0]
// do something with it
// ...
}
将该行放在
subscribe
函数中
.subscribe(data => {
this.dataList = data.result;
let labels = this.dataList[0];
});
您还可以使用ES6解构:
.subscribe(data => {
this.dataList = data.result;
let [labels] = this.dataList;
});
放置行
let labels=this.dataList[0]
紧接着this.dataList=data.result代码>。原因是dataList
在回调中异步更新,这意味着这一点。调用dataList[0]
时,它可能不包含任何数据。。subscribe
是一个异步函数。您必须在内部设置标签
。订阅
可能重复的标签您应该在订阅块外部声明标签,否则只能在内部使用。