处理promises nodejs中的返回值

时间:2015-08-10 16:07:28

标签: javascript node.js git nodegit node-github

我在NodeJs中构建了这个函数,

var Git = require('nodegit');
var fse = require('fs-extra');
var path = require('path');
var fs = require('fs');
var repoPath = 'D:\\sample'

function gitCommitHistory(repoPath, callbackGitCommitHistory) {
try {
    var open = Git.Repository.open;
    var commitList = [];
    open(repoPath)
      .then(function(repo) {              
        return repo.getMasterCommit();
      })
      .then(function(firstCommitOnMaster) {
        var history = firstCommitOnMaster.history();            
        history.on("commit", function(commit) {
            if (commit === 'undefined') {
                callbackGitCommitHistory(null, commitList);
            }
          var author = commit.author();
          commitList.push({commitAuthor:author.name(),commitAuthorEmail:author.email(), 
              commitMessage:commit.message(), commitSha:commit.sha(), commitDate:commit.date()});
        });
        history.on("error", function(err){
            console.log(err)
        })
        history.on("end", function(){               
            callbackGitCommitHistory(null, commitList);
        });
        history.start();
      });   
} catch (error) {
    callbackGitCommitHistory(error);
}

};

我使用模块" Nodegit"构建了这个功能。他们使用promises作为回调处理程序。

在函数中,我正在检索用户在存储库上完成的所有提交,并将其作为对调用Web服务的响应发送。

如果存在至少一个提交,则该函数正常工作,(即)repo.getMasterCommit返回提交历史记录。但是,如果我将repoPath提供给一个零提交的新repo,那么该函数不会返回任何内容,因此我无法向调用Web服务发送任何响应。请帮助解决这种情况!!!!!!!!

1 个答案:

答案 0 :(得分:1)

GitHub回购

Related issue

这应该在下一个版本(0.5)中修复,目前通过661在master中修复。虽然艾哈迈德·阿萨夫是正确的,但由于没有头部承诺,它拒绝承诺链。