AngularサービスでサードパーティのJSライブラリをラッピングしています。サードパーティのJSライブラリがロード/初期化されたことなどをどのように保証することができますか?私のサービスを使用する前に?サードパーティのJSライブラリがAngular 2サービスで初期化を完了するのを待つ最善の方法は?
次のコードをご覧になり、これがの良いコーディング慣行である場合は教えてください。私はサービスのコンストラクタ(約束が最終的に達成される)に約束を設定しています。サービスメソッドは、その約束の成功に依存しています(getMessages
参照)。そのexempleで
@Injectable()
export class GmailService {
private _readyPromise;
// Load Gmail API client library.
// gapi.client.load() returns a promise.
constructor() {
this._readyPromise = gapi.client.load('gmail', 'v1');
}
private ready():Promise {
return this._readyPromise;
}
// Return Gmail messages for the current user.
getMessages() {
return this.ready().then(() => {
return gapi.client.gmail.users.messages.list({
'userId': 'me'
}).then(resp => console.log(resp));
});
}
}
、私には、JavaScriptのためのGmailのAPIを使用したことだし、それはgapi.client.load()
はすでにコードを簡素化する約束を、返すことが判明。別のシナリオでは、私は自分の約束を作り、特定の条件が満たされたときにそれを手動で履行することができました。