为什么回复的承诺是空的?
我试图使用.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'); });
问题可能是connections
返回一个空数组。 我在本地进行了testing,并且pushPromise
正确地返回了promise的数组。