【发布时间】:2018-01-02 10:43:14
【问题描述】:
除了混入 bluebird 或 return new Promise() 之外,有没有办法处理异步 function() 中的回调函数?
例子很有趣...
问题
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);
});
});
}
有没有更优雅的解决方案?
【问题讨论】:
-
nodejs v.8.x.x
util.promisify(: -
编写一个通用函数来为您调用
new Promise。或者只使用现有的众多库之一,无论是来自节点的util、Bluebird还是任何其他库。 -
util.promisify 对象和函数的包装器:npmjs.com/package/doasync
标签: javascript node.js asynchronous