处理承诺 nodejs 中的 return 个值
handling return values in promises nodejs
我已经在 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 returns 提交历史,该函数工作正常。但是,如果我将 repoPath 提供给一个零提交的新 repo,那么该函数不会返回任何内容,因此我无法向调用 Web 服务发送任何响应。请帮助如何处理这种情况!!!!!!!!
Related issue GitHub 回购。
这应该会在下一个版本 (0.5) 中修复,目前已通过 661 在 master 中修复。 Ahmad Assaf 是正确的,它拒绝了承诺链,因为没有 head 提交。
我已经在 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 returns 提交历史,该函数工作正常。但是,如果我将 repoPath 提供给一个零提交的新 repo,那么该函数不会返回任何内容,因此我无法向调用 Web 服务发送任何响应。请帮助如何处理这种情况!!!!!!!!
Related issue GitHub 回购。
这应该会在下一个版本 (0.5) 中修复,目前已通过 661 在 master 中修复。 Ahmad Assaf 是正确的,它拒绝了承诺链,因为没有 head 提交。