我想写一个简单的函数,将节点式回调函数转换为承诺,所以我可以使用它们与异步/等待。节点回调承诺与异步/等待
当前代码:
function toPromise(ctx, func, ...args) {
let newPromise;
args.push((err, res) => {
newPromise = new Promise((resolve, reject)=> {
if(err) reject(err);
else{
resolve(res)
};
});
});
func.apply(ctx, args);
return newPromise;
}
用法示例:
const match = await toPromise(user, user.comparePassword, password);
//trying to avoid the following:
user.comparePassword(password, (err, res) => {
... });
这可能不与一些大图书馆在那里任何意义,但我只是想作为一个实现代码行使。
问题当然匹配评估为undefined,显然promise会在await语法行后解析。
任何想法如何解决这个问题?
谢谢!该死的,我应该知道这个...... – Seneca