为什么返回的承诺是空的?

时间:2016-08-07 06:43:02

标签: javascript node.js

我试图在所有承诺得到解决后使用.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');
});

1 个答案:

答案 0 :(得分:1)

问题可能是connections返回一个空数组。我在本地进行了测试,pushPromise正在正确地返回一系列承诺。