2016-11-08 98 views
1

我有兩個函數,我想調用,但我只想在第一個函數完成後調用第二個函數。我該如何去做呢?TypeScript/Angular 2 - 在另一個完成後調用一個函數

首先功能:

getDirectorySubfolders(node: any) { 
    console.log('Home:getDirectorySubfolders() entered...'); 

    this._sdiService.getDirectoriesAtPath("Desktop") 
     .subscribe(res => { 
      this.nodeChildren = res; 
     }); 
} 

功能:

getChildren(node: any) { 
    console.log('Home:getChildren entered..'); 
    return new Promise((resolve, reject) => 
    { 
     setTimeout(() => resolve(this.nodeChildren.map((c) => 
     { 
      return Object.assign({}, c, {}); 
     })), 1000); 
    }); 
} 

回答

3

有兩種簡單的方法,第一個完成之後打電話給你的第二個功能 - 你可以this.nodeChildren = res;下做到這一點或使用完成參數()

getDirectorySubfolders(node: any) { 
    console.log('Home:getDirectorySubfolders() entered...'); 

    this._sdiService.getDirectoriesAtPath("Desktop") 
     .subscribe(res => { 
      this.nodeChildren = res; 
      this.getChildren(); <-- here 
     }, 
     () => { 
      this.getChildren(); <-- or here 
     }); 
} 

當您撥打getDirectorySubfolders()函數時,getChildren()將在完成getDirectorySubfolders()後調用。

相關問題