Promise.all()。then() – then()在all()完成之前执行

在一个gulp任务中,我有下面的代码,它创build了一个在Promise.all()语句中执行的Promise.all() 。 之后,我打电话给一个then()的进一步陈述。 但是then()在git拉入all()之前被调用。 有什么线索吗?

 var git = require('gulp-git'); var gitActionPromise = function(repo, url) { console.log('git action '+repo); var pathToRepo = './repos/'+repo; if (fs.lstatSync(pathToRepo).isDirectory()) { return new Promise((resolve, reject) => { git.pull('origin', 'master', {cwd: pathToRepo}, function (err) { console.log(repo + " pull done!"); if (err) { console.log('error'); reject(err); } else { console.log('ok'); resolve(); } }) }) } else { return new Promise((resolve, reject) => { git.clone(url, {cwd: pathToRepo}, function (err) { console.log(repo + " clone done!"); if (err) { console.log('error'); reject(err); } else { console.log('ok'); resolve(); } }) }) } }; var repos = package.repos || {}; var promises = Object.keys(repos).map(function(repo) { return gitActionPromise(repo, repos[repo]); }); Promise.all(promises).then( console.log('something else') <= this line was causing my issue ); needed to be enclosed in function 

你必须传递一个函数then

 Promise.all(promises).then(function() { console.log('something else'); }); 

你只需简单地logging“别的东西”的代码。