Angular 从承诺中提取实际数据并分配给变量
我的第一次尝试是有棱角的。我试图将承诺中的值赋给一个变量,但我无法使它工作。我想使用最后一个变量在“选择”下拉列表中填充国家数据Angular 从承诺中提取实际数据并分配给变量,angular,Angular,我的第一次尝试是有棱角的。我试图将承诺中的值赋给一个变量,但我无法使它工作。我想使用最后一个变量在“选择”下拉列表中填充国家数据 console.log("1",this.globals.countryMasterDummy); this.globals.countryMasterDummy.then(function(data){console.log("2",data)}); this.globals.countryMasterDummy.then(function(data: Countr
console.log("1",this.globals.countryMasterDummy);
this.globals.countryMasterDummy.then(function(data){console.log("2",data)});
this.globals.countryMasterDummy.then(function(data: Countrymaster){ this.scanCountries = data});
console.log('3', this.scanCountries) ;
this.globals.countryMasterDummy.then((data) => {
this.scanCountries = data;})
.catch((ex) => {
console.log(ex);});
console.log('4', this.scanCountries) ;
外部的.scanCountries变量(声明为公共扫描国家:Countrymaster)。然后()失去值,因此无法在填充下拉列表时使用此变量
console.log("1",this.globals.countryMasterDummy);
this.globals.countryMasterDummy.then(function(data){console.log("2",data)});
this.globals.countryMasterDummy.then(function(data: Countrymaster){ this.scanCountries = data});
console.log('3', this.scanCountries) ;
this.globals.countryMasterDummy.then((data) => {
this.scanCountries = data;})
.catch((ex) => {
console.log(ex);});
console.log('4', this.scanCountries) ;
控制台MSG随附:
更新代码:
this.globals.countryMasterDummy.then((data) => {
this.scanCountries = data;
this.countryLoaded = true;
// console.log('this.scanCountries',this.scanCountries);
})
.catch((ex) => {
console.log(ex);});
<div *ngIf="countryLoaded ; else loading; ">
<span>Country</span>
<select class="form-control" [(ngModel)]="selectedOption">
<option [ngValue]="null">ALL</option>
<option *ngFor="let scanCountry of scanCountries" [value]="scanCountry.alpha2_Country_Code" >{{ scanCountry.Country_Name }}</option>
</select>
</div>
HTML:
this.globals.countryMasterDummy.then((data) => {
this.scanCountries = data;
this.countryLoaded = true;
// console.log('this.scanCountries',this.scanCountries);
})
.catch((ex) => {
console.log(ex);});
<div *ngIf="countryLoaded ; else loading; ">
<span>Country</span>
<select class="form-control" [(ngModel)]="selectedOption">
<option [ngValue]="null">ALL</option>
<option *ngFor="let scanCountry of scanCountries" [value]="scanCountry.alpha2_Country_Code" >{{ scanCountry.Country_Name }}</option>
</select>
</div>
国家
全部的
{{scanCountry.Country_Name}
承诺表示异步过程的结果。它异步调用您传递给then()的回调,即稍后,当结果可用时。因此,在调用then()之后,不能期望结果立即可用。就像,当你发送一封电子邮件时,你不能期望在发送后立即收到回复。这不应阻止下拉列表填充:它将在this.scanCountries=data时填充代码>被执行,因为Angular将检测到更改。这是否回答了您的问题?@JB Nizet/@UncleDave--感谢您的回复,理解这个示例很容易,参考链接对像我这样的初学者也很有帮助……在代码中添加了一些内容,以保证以后的数据可用性……现在可以工作了……感谢……文章中的代码更新。承诺是JavaScript的一个特性,而不是角度。