首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Promise.all().then() -然后()在所有()完成之前执行

Promise.all().then() -然后()在所有()完成之前执行
EN

Stack Overflow用户
提问于 2015-12-02 15:47:57
回答 1查看 2.9K关注 0票数 5

在一个gulp任务中,我有以下代码,它创建了一个在gitAction语句中执行的Promise.all()承诺数组。之后,我将在then()中调用另一条语句。但是,在git拉入all()结束之前正在调用then()。有线索吗?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-02 16:31:24

您必须将一个函数传递给then

代码语言:javascript
复制
Promise.all(promises).then(function() {
    console.log('something else');
});

您所拥有的代码将立即记录“其他东西”。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34046960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档