Tôi đang cố gắng tạo một hàm đệ quy bằng cách sử dụng lời hứa, nhưng dường như không thể làm cho nó đúng. Tôi đã làm việc mã mà không sử dụng lời hứa, nhưng nó sử dụng quầy và biến toàn cầu vv và không cảm thấy khá đúng, vì vậy tôi đang cố gắng viết lại và cũng tạo ra một mô-đun để tái sử dụng.Lời hứa đệ quy Javascript
Về cơ bản, chức năng được cho là nhận được một người dùng từ Active Directory và sau đó đệ quy tìm kiếm bất kỳ báo cáo trực tiếp nào và báo cáo trực tiếp của họ, v.v.
Tôi đã chơi với rất nhiều phiên bản của các chức năng, đây là hiện thời:
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));
});
}
Chức năng getAccessTokenPromise
thực hiện một yêu cầu cho một access token và trả về một lời hứa cho điều đó. Chức năng makeRequest
một lần nữa chỉ yêu cầu https cho người dùng và báo cáo của họ và trả về một đối tượng json với kết quả dưới dạng Lời hứa.
Bất kỳ ý tưởng nào được nhận rất nhiều. Cảm ơn nhiều. D.
"nhưng nó sử dụng bộ đếm và biến toàn cục, v.v ..." --- bây giờ bạn thấy hàm số không tinh khiết và biến tự do là xấu. Đầu tiên reimplement nó để nó không dựa vào các biến từ các phạm vi bên ngoài, sau đó promisify nó. – zerkms