我试图在所有承诺得到解决后使用.all
来执行操作,但是当我返回一个承诺时它只是空的。
我将所有承诺附加到pushPromise
以及稍后当我尝试Promise.all(pushPromise)
时,它将无效。
我尝试console.log(pushPromise)
并显示空数组。为什么?
由于
var Client = require('ssh2-sftp-client');
var sftp = new Client();
var folderPromise = [];
var toServer = function(dir){
return new Promise(function (resolve, reject){
filePermission(dir, function(){
getAllFiles(dir.replace(/\/$/, ''));
console.log('Got all files');
resolve();
});
}).then(function(done){
arrayfolder.forEach(function(folder){
folder = folder.replace(dir, '');
//console.log(folder);
folderPromise.push(sftp.mkdir(folder, true));
});
return Promise.all(folderPromise).then(function(){
console.log('Folder added');
return 'Done';
});
}).then(function() {
return 'Done';
})
.catch((err) => {
console.log(err);
return 'Not Done';
});
}
var pushPromise = [];
connections.forEach(function(connection){
var dir = getConnectionDir(connection);
pushPromise.push(toServer(dir));
});
console.log(pushPromise); // return []
Promise.all(pushPromise).then(function(){
console.log('All uploaded to server');
});
答案 0 :(得分:1)
问题可能是connections
返回一个空数组。我在本地进行了测试,pushPromise
正在正确地返回一系列承诺。