javascript - Javascript 异步函数不需要返回 Promise
问题描述
我需要在 Javascript 中编写一个回调函数,它返回一个简单的真或假,这将确定在 SFTP 调用中是否继续执行。(我正在使用 SSH2 nodejs 库和 hostVerifier 配置选项,但这可能是在很多情况下都可以找到的问题)。
所以我正在做类似的事情:
conn.on('ready', function() {
// do some stuff here
}).connect({
host,
port: 22,
username,
password,
hostHash: 'md5',
hostVerifier: validateFn,
});
其中 validateFn 看起来像:
const validateFn = async function(hash) {
try {
const myFile = await s3.getObject({
Bucket: "my-bucket",
Key: `${filename}`,
}).promise();
// bla, bla ... do some more stuff here
} catch (e) {
return false;
}
return true;
};
validateFn 调用需要是异步的,因为它正在执行一些远程调用,我需要在继续之前等待响应。问题是 validateFn 将返回一个承诺包装的布尔值,而不是 SSH2 期望的简单布尔值,并且整个事情都不能正常工作。
你有什么方法可以解决这个问题并获得一个回调来返回预期的简单真/假?
解决方案
推荐阅读
- python - 什么是在 pd.dataframe 中查找一组连续常量值的干净 Python 方法?
- input - 如何控制输入值是反应形式的整数
- angular - 在 Angular 6 / Ionic 4 功能模块中提供服务时的循环依赖
- excel - 从大型数据集中提取最小/最大/平均数据的宏
- sql - 在浮点值上乘以 startdate = 00:00:00 和 enddate HH:mm:ss 之间的小时差
- google-sheets - 允许插入新数据行但不更改公式
- c# - 取消带参数的任务
- python - 限制对 python tornado web 服务器中某些文件、文件夹的访问
- c# - 如何使用接口列表和可能没有值的嵌套接口列表处理复杂类型的模型绑定
- python - Python - 从 for 循环语句中仅返回第一个值