私はPromisesを使って再帰関数を作成しようとしていますが、それを正しく得ることはできません。私は約束を使わずに作業コードを持っていますが、カウンターやグローバル変数などを使用していますので、書き直しを試みて再利用のためのモジュールを作成しようとしています。Javascript Recursive Promise
本質的に、この機能はActive Directoryからユーザーを取得してから、直接レポートとその直接レポートなどを再帰的に検索することになっています。私は機能のバージョンがたくさんプレーした
が、これは現在のものです:
function loadReports(personEmail, list) {
return new Promise((resolve, reject) => {
getAccessTokenPromise()
.then(access_token => {
list.push(personEmail);
return makeRequest(personEmail, access_token);
}).then(result => {
if (result.value.length > 0) {
Promise.all(result.value.map(person => {
loadReports(person.userPrincipalName, list);
})).then(resolve());
} else {
resolve();
}
})
.catch(e => reject(e));
});
}
getAccessTokenPromise
機能は、アクセストークンの要求を実行し、そのための約束を返します。 makeRequest
関数は、ユーザーとそのレポートに対してhttps要求を行い、その結果がPromiseであるjsonオブジェクトを返します。
どのような考えが大きく寄せられました。どうもありがとう。 D.
"しかし、カウンターやグローバル変数などを使用しています" ---今は、不純な関数と自由変数がどのように悪いのかを見ています。最初にそれを再実装して、外側のスコープからの変数に依存しないようにしてから、それを約束します。 – zerkms