除了混入bluebird或return new Promise()之外,有没有其他方法来处理async函数中的回调函数?
例子很有趣......
问题
async function bindClient () {
client.bind(LDAP_USER, LDAP_PASS, (err) => {
if (err) return log.fatal('LDAP Master Could Not Bind', err);
});
}
解决方案
function bindClient () {
return new Promise((resolve, reject) => {
client.bind(LDAP_USER, LDAP_PASS, (err, bindInstance) => {
if (err) {
log.fatal('LDAP Master Could Not Bind', err);
return reject(err);
}
return resolve(bindInstance);
});
});
}
有更优雅的解决方案吗?
util.promisify
函数: - num8ernew Promise
调用。或者只需使用现有的许多函数之一,例如来自 node 的util
、Bluebird
或任何其他库。 - Bergi