首页 > 解决方案 > 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 期望的简单布尔值,并且整个事情都不能正常工作。

你有什么方法可以解决这个问题并获得一个回调来返回预期的简单真/假?

标签: javascriptasync-await

解决方案


推荐阅读