我根据插入的内容生成域列表,以实时显示列表:
<input [(ngModel)]="domain" (input)="generateList()" type="text" name="search" class="form-control" id="inp3" placeholder="Enter your domain">
这是 generateList()方法:
domainList: domainEntity[] = [];
tld = ['.com', '.net', '.org','.info','.online', '.tech', '.design', '.group']
generateList() {
this.domainList = [];
this.domain = this.domain[0].toUpperCase() + this.domain.slice(1);
this.tld.forEach(t => {
let domain = new domainEntity(this.domain.trim().split(' ').join('').concat(t), 'pending');
this.domainList.push(domain);
});
for (let i = 0; i < this.domainList.length; i++) {
this.domainService.getDomainStatus(this.domainList[i])
.subscribe(domainAvailability => {
this.domainList[i].domainStatus = domainAvailability.toString().split(';')[1].split('=')[1];
},
error => {
const domainAvailability = error.error.text;
this.domainList[i].domainStatus = domainAvailability.toString().split(';')[1].split('=')[1];
console.log(this.domainList[i].domainName,'****',this.domainList[i].domainStatus);
});
}
}
问题是当我在输入中插入另一个char时,我在日志中看到上一个循环仍使用前一个输入值调用getDomainStatus(),并在完成后得到新结果。
示例::我插入“ a”,该列表包含: ['a.com','a.net','a.org',...] ,然后进入循环以检查状态。当我输入另一个'a'时,列表将变为 ['aa.com','aa.net','aa.org',...] ,但我没有任何域状态直到第一个循环从调用第一个列表的getDomainStatus()结束。
为什么循环没有重新开始?