我正在尝试使用Promises创建递归函数,但好像无法得到正确的结果。 我已经有了不使用promises的工作代码,但它使用计数器和全局变量等并不完美,因此我正在重写该代码,并创建可以重复使用的模块。
本质上,该函数应该从Active Directory获取用户,并递归查找其所有直接报告者、直接报告者的直接报告者等等。
我已经尝试了很多版本的这个函数,以下是当前版本:
非常感谢您的意见。D.
本质上,该函数应该从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
函数执行一个访问令牌请求并返回一个 Promise 对象。 makeRequest
函数再次为用户和其报告进行 https 请求,并返回一个包含结果的 json 对象作为 Promise。非常感谢您的意见。D.