javascript - 节点:util.promisify() 没有回调作为最终参数
问题描述
我正在尝试使用util.promisify()
转换一个使用回调的函数,以便我可以使用 async/await 调用它:https ://nodejs.org/dist/latest-v8.x/docs/api/util.html#util_util_promisify_original
到目前为止,我已经能够将它与将回调作为最终参数的函数一起使用,正如它所期望的那样。但是当另一个项目是最终参数时,我对如何使用它感到困惑。
我有一个结构如下的函数:
myFunction = function(userID, company, callback, jwt) {
....
return callback(null, results)
}
由于jwt
是最后一个参数,我怎样才能在这个上使用 promisify 并且仍然通过jwt
?我宁愿不更改原始函数的结构,因为其他地方按原样调用它
解决方案
你可以在你的函数周围创建一个新的函数包装器,它只接受不同顺序的参数,以便最后移动回调:
const wrapper = (userID, company, jwt, callback) =>
myFunction(userID, company, callback, jwt);
const promisified = utils.promisify(wrapper);
对于更通用的解决方案,您可以使用 Lodash rearg
,它将根据您提供的数组更改参数的顺序:
const wrapper = _.rearg(myFunction, [0, 1, 3, 2]);
const promisified = utils.promisify(wrapper);
推荐阅读
- r - 如何从现有线的末尾开始绘制一条线?
- tfs - 使用 top - 参数从 TFS-API 获取构建
- flutter - 从 AlertDialog 中调用 SnackBar
- python-3.x - 输入负输入后Python继续循环
- azure-ad-b2c - 注册后 AD B2C 中的电子邮件验证
- flutter - 如何使用 Image.asset 在 Flutter 中过滤(模糊)图像?
- aws-cdk - 如何使用从数字或布尔值的 CloudFormation 参数读取的属性创建 Cfn 资源?
- android - Android-BLE - 将数据写入特征的问题
- java - 访问创建您当前所在的类的类中的方法
- python - 如何沿某个维度将元素添加到 PyTorch 张量?