在使用activedirectory2模块的时候,要查找符合条件的用户时,需要传入一个回调函数来进行处理。如果在回调函数中存在异步操作,可能会导致回调函数的执行时间比主代码的执行时间长,从而导致回调函数中的值没有正确返回给主代码。
因此,我们需要使用Promise来解决这个问题。具体来说,我们可以将回调函数封装成一个Promise对象,然后在主代码中使用async/await来异步处理这个Promise对象。示例如下:
const activedirectory = require('activedirectory2');
// 将回调函数封装为Promise
function findUserPromise(ad, opts) {
return new Promise((resolve, reject) => {
ad.findUsers(opts, (err, results) => {
if (err) reject(err);
resolve(results);
});
});
}
// 在主代码中使用async/await来异步处理Promise对象
async function main() {
const opts = { filter: '(&(objectclass=user)(sAMAccountName=jdoe))', attributes: ['dn', 'sn', 'cn'] };
const ad = new activedirectory(opts);
try {
const results = await findUserPromise(ad, opts);
console.log(results);
} catch(err) {
console.error(err);
}
}
main();