Проблема с возвратом обещания в node.js - PullRequest
0 голосов
/ 14 декабря 2018

В настоящее время я использую библиотеку ssh2-sftp-client для соединения с sftp, но я использую метод интерактивной клавиатуры для решения одной проблемы. Мне нужно вернуть разрешение после того, как будут решены оба метода: 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);

  });

После того, как все будет завершено, верните разрешение, как я могу добиться этого?

...