Angular subscribe value 始终给定值-1,真实1之前的值
Angular subscribe value is always given the value - 1, the value before the real one
我正在尝试在 .subscribe
完成后执行一个事件,因为它之后的代码取决于结果
verifBordereauExistBase(id: string) {
return this._BourdereauService.get_one(id).subscribe(
data = > {
if (data.idBourdereau == null) {
this.idBourdereauIsValid = false;
} else {
this.idBourdereauIsValid = true;
}
}, err = > {
console.error(err)
}, () = > {})
}
主要测试在这里
AddBordereautoList() {
this.verifBordereauExistBase(this.idbordereaux);
console.log(this.idBourdereauIsValid)
if (Number.isNaN(Number(this.idbordereaux))) {
this.notifier.notify('error', 'Format code a bare invalide');
} else if (this.idbordereaux.length != 10) {
this.notifier.notify('error', 'Format code a bare invalide');
} else if (this.idBourdereauIsValid == false) {
this.notifier.notify('error', 'Bordereau n\'existe pas ');
} else {
if (this.map.size == 0) {
this.map.set(1, this.idbordereaux);
} else {
let x: number = this.verifexistbordereau(this.idbordereaux);
if (x === 0) {
this.map.set(this.map.size + 1, this.idbordereaux);
} else {
this.notifier.notify('error', 'Bordereau N°' + this.idbordereaux + 'existe deja dans la liste!');
}
}
}
this.idbordereaux = "";
}
我正在执行这段代码,this.idBourdereauIsValid
的值落后一步,它给我的值 - 1 总是
this.verifBordereauExistBase(this.idbordereaux);
下的代码可能在 this.verifBordereauExistBase(this.idbordereaux);
有机会 return 之前执行。为确保它确实如此,请将 AddBordereautoList()
代码添加到 .subscribe
完整步骤:
verifBordereauExistBase(id: string) {
return this._BourdereauService.get_one(id).subscribe(
data = > {
if (data.idBourdereau == null) {
this.idBourdereauIsValid = false;
} else {
this.idBourdereauIsValid = true;
}
}, err = > {
console.error(err)
}, () = > {
console.log(this.idBourdereauIsValid)
if (Number.isNaN(Number(this.idbordereaux))) {
this.notifier.notify('error', 'Format code a bare invalide');
} else if (this.idbordereaux.length != 10) {
this.notifier.notify('error', 'Format code a bare invalide');
} else if (this.idBourdereauIsValid == false) {
this.notifier.notify('error', 'Bordereau n\'existe pas ');
} else {
if (this.map.size == 0) {
this.map.set(1, this.idbordereaux);
} else {
let x: number = this.verifexistbordereau(this.idbordereaux);
if (x === 0) {
this.map.set(this.map.size + 1, this.idbordereaux);
} else {
this.notifier.notify('error', 'Bordereau N°' + this.idbordereaux + 'existe deja dans la liste!');
}
}
}
this.idbordereaux = "";
})
}
我正在尝试在 .subscribe
完成后执行一个事件,因为它之后的代码取决于结果
verifBordereauExistBase(id: string) {
return this._BourdereauService.get_one(id).subscribe(
data = > {
if (data.idBourdereau == null) {
this.idBourdereauIsValid = false;
} else {
this.idBourdereauIsValid = true;
}
}, err = > {
console.error(err)
}, () = > {})
}
主要测试在这里
AddBordereautoList() {
this.verifBordereauExistBase(this.idbordereaux);
console.log(this.idBourdereauIsValid)
if (Number.isNaN(Number(this.idbordereaux))) {
this.notifier.notify('error', 'Format code a bare invalide');
} else if (this.idbordereaux.length != 10) {
this.notifier.notify('error', 'Format code a bare invalide');
} else if (this.idBourdereauIsValid == false) {
this.notifier.notify('error', 'Bordereau n\'existe pas ');
} else {
if (this.map.size == 0) {
this.map.set(1, this.idbordereaux);
} else {
let x: number = this.verifexistbordereau(this.idbordereaux);
if (x === 0) {
this.map.set(this.map.size + 1, this.idbordereaux);
} else {
this.notifier.notify('error', 'Bordereau N°' + this.idbordereaux + 'existe deja dans la liste!');
}
}
}
this.idbordereaux = "";
}
我正在执行这段代码,this.idBourdereauIsValid
的值落后一步,它给我的值 - 1 总是
this.verifBordereauExistBase(this.idbordereaux);
下的代码可能在 this.verifBordereauExistBase(this.idbordereaux);
有机会 return 之前执行。为确保它确实如此,请将 AddBordereautoList()
代码添加到 .subscribe
完整步骤:
verifBordereauExistBase(id: string) {
return this._BourdereauService.get_one(id).subscribe(
data = > {
if (data.idBourdereau == null) {
this.idBourdereauIsValid = false;
} else {
this.idBourdereauIsValid = true;
}
}, err = > {
console.error(err)
}, () = > {
console.log(this.idBourdereauIsValid)
if (Number.isNaN(Number(this.idbordereaux))) {
this.notifier.notify('error', 'Format code a bare invalide');
} else if (this.idbordereaux.length != 10) {
this.notifier.notify('error', 'Format code a bare invalide');
} else if (this.idBourdereauIsValid == false) {
this.notifier.notify('error', 'Bordereau n\'existe pas ');
} else {
if (this.map.size == 0) {
this.map.set(1, this.idbordereaux);
} else {
let x: number = this.verifexistbordereau(this.idbordereaux);
if (x === 0) {
this.map.set(this.map.size + 1, this.idbordereaux);
} else {
this.notifier.notify('error', 'Bordereau N°' + this.idbordereaux + 'existe deja dans la liste!');
}
}
}
this.idbordereaux = "";
})
}