0

我目前正在使用 ssh2-sftp-client 库与 sftp 连接,但我正在使用键盘交互式 on 方法来解决一个问题,我需要在 connect 和 on 方法都解决后返回解析。下面是我的代码

    const Client = require('ssh2-sftp-client');
    const sftp = new Client();

    const connectToSFTP = config => {
      console.log(config);
      return new Promise((resolve, reject) => {
        sftp.connect({
          host: config.host,
          port,
          username: config.username,
          tryKeyboard: true
        }).then(data => {
          console.log(data);
          resolve(data);
        }).catch(err => {
          console.log(err);
          reject(err);
        });

        sftp.on('keyboard-interactive', (name, instructions, instructionsLang, prompts, finish) => {
          console.log('Connection :: keyboard-interactive');
          finish([config.password]);
        })
      });

    };

const functionOne = () => {
     return new Promise((resolve, reject) => {
            resolve('somedata');
     })
}

const functionTwo = () => {
return Promise.all(lodash.map(data, (item, item1) => {

          return connectToSFTP(item.config)
              .then(data => {
                console.log(data); //cannot see data

              }).catch(err =>{
                 console.log(err);
               })  
       })

}

functionOne()
  .then(data => {
    return functionOne();
  })
  .then(data => {
    return functionOne();
  })
  .then(data => {
    return functionOne();
  })
  .then(data => {
    console.log('second');
    return functionTwo();
  }).then(data => {
  console.log('finished');
})
  .catch(err => {
    console.log(err);

  });

一切完成后返回resolve,我该如何实现呢?

4

0 回答 0