在一个gulp任务中,我有以下代码,它创建了一个在gitAction语句中执行的Promise.all()承诺数组。之后,我将在then()中调用另一条语句。但是,在git拉入all()结束之前正在调用then()。有线索吗?
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发布于 2015-12-02 16:31:24
您必须将一个函数传递给then
Promise.all(promises).then(function() {
console.log('something else');
});您所拥有的代码将立即记录“其他东西”。
https://stackoverflow.com/questions/34046960
复制相似问题