2017-04-19 8 views
0

私はtypescriptです関数から文字列を返すようにしようとしています -活字体の戻り値

private _renderListAsync(): string { 
    let _accHtml: string=''; 
    // Local environment 
    if (Environment.type === EnvironmentType.Local) {  

     this._getMockListData() 
     .then((response) => { 
     _accHtml = this._renderList(response.value); 
     alert("1: " + _accHtml) 
     }) 
     alert("3: " + _accHtml); 
     return _accHtml; 
    } 
    else if (Environment.type == EnvironmentType.SharePoint || 
       Environment.type == EnvironmentType.ClassicSharePoint) { 

     this._getListData() 
     .then((response) => { 
      _accHtml = this._renderList(response.value); 
      alert("2: " + _accHtml);   
     })  
     alert("3: " + _accHtml); 
     return _accHtml; 
    }  
    } 

しかし、私は唯一の「1」との警告の文字列値を取得することができるよと「2」ではなく「3 "警告が空の場合、関数から_accHtmlを返すことができません。私は間違って何をしていますか?また、 "1"と "2"の前に "3"のアラートが表示されていることに気づきます。なぜですか?

+0

私はまた、if-elseブロックの後に_accHtmlを返そうとしましたが、まだ動作しません。 – user3759018

+3

[非同期呼び出しからの応答を返す方法は?](http://stackoverflow.com/questions/14220321/how – Andreas

+0

私は確かに言うことはできませんが、私は約束APIのいくつかの指標を見ています(つまり、 '.then()'がシグナルを送るかもしれません)非同期呼び出しを使用しています。これは非同期の問題のように感じます... – War10ck

答えて

0

これは「.then(...)は」プロセスは非同期であるため、それは新しいスレッドを開き、方法の次の行を実行し続け、それは私が使用は

を観測することをお勧め2前3と1を示しているが起こります