asynkron - TypeScript/Angular 2 - kall en funksjon etter at en annen fullfører
Jeg har to funksjoner som jeg ønsker å kalle, men jeg vil bare kalle den andre etter at den første er ferdig. Hvordan går jeg frem for å gjøre det?
Første funksjon:
getDirectorySubfolders(node: any) {
console.log('Home:getDirectorySubfolders() entered...');
this._sdiService.getDirectoriesAtPath("Desktop")
.subscribe(res => {
this.nodeChildren = res;
});
}
Andre funksjon:
getChildren(node: any) {
console.log('Home:getChildren entered..');
return new Promise((resolve, reject) =>
{
setTimeout(() => resolve(this.nodeChildren.map((c) =>
{
return Object.assign({}, c, {});
})), 1000);
});
}
Svar #1
Det finnes to enkle måter å kalle din andre funksjon etter at den første er ferdig - du kan gjøre det under this.nodeChildren=res; eller bruke finish-parameteren ():
getDirectorySubfolders(node: any) {
console.log('Home:getDirectorySubfolders() entered...');
this._sdiService.getDirectoriesAtPath("Desktop")
.subscribe(
res => {
this.nodeChildren = res;
this.getChildren(); <-- here
},
err => {
console.log(err);
},
() => {
this.getChildren(); <-- or here
});
}
Når du kaller getDirectorySubfolders()-funksjonen, vil getChildren() bli kalt etter at getDirectorySubfolders() er fullført. Husk at hvis du bruker finish-parameteren, vil funksjonen bli kalt selv om det oppstår en feil.
