gpt4 book ai didi

javascript - 使用 async/await promise 的 Node 回调

转载 作者:数据小太阳 更新时间:2023-10-29 04:30:54 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的函数,将 Node 样式的回调函数转换为 Promise,以便我可以将它们与 async/await 一起使用。

当前代码:

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) => {
... });

对于一些很棒的库来说,这可能没有任何意义,但我只是想将其编码为练习。

问题当然是 match 评估为未定义,显然 promise 在 await 语法行之后得到解决。

知道如何解决这个问题吗?

最佳答案

从 node v8.0.0 开始,他们添加了 util.promisify

const util = require('util');
const fs = require('fs');

const stat = util.promisify(fs.stat);
stat('.').then((stats) => {
// Do something with `stats`
}).catch((error) => {
// Handle the error.
});

引用:https://nodejs.org/api/util.html#util_util_promisify_original

关于javascript - 使用 async/await promise 的 Node 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33476882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com