我正在嘗試使用Promises創建遞歸函數,但似乎無法完成正確的操作。我有工作代碼沒有使用承諾,但它使用計數器和全局變量等,並不覺得很正確,所以我正在嘗試重寫,並創建一個模塊重用。Javascript遞歸承諾
本質上,該功能應該是從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