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“别的东西”的代码。
- github ssh公共密钥没有find与node.js child_process.spawn()在Windows上,但在child_process.exec()可见
- 在我的应用程序上工作时,如何增强第三方npm模块在github上提交PR
- angular手机教程 – 服务器不工作
- 包括不在存储库中的文件
- configurationJenkins的angular度项目 – 单个git仓库与多个包
- 如何在openshift中引用子模块?
- 不能在heroku上创buildnode.js应用程序 – 即使在buildpack设置之后,“App与buildpack不兼容”
- 如何克隆github仓库,然后在puppet上运行npm install
- Nodegit克隆不工作?