我目前正在使用 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,我该如何实现呢?