-1
工作我如此努力,使这项工作,但我不能。回调不节点快速JS
这个函数是一个router.get功能内。我的前端应用程序让我打电话,并请求其他服务。 在该服务中我得到了父文件夹的信息。在此之后我做一个foreach (localProjects.forEach)来获取信息的文件夹,这个回调是相当不错的,但是当我送项目:localProjects小时在0零仍在。我打印小时数,但由于某些原因小时数仍然为零。
request.get('/folders/'+parentFolder+'/folders?descendants=false&project=false', {
'auth': {
'bearer': Token
}
}, function(err, response, body) {
var folders = JSON.parse(body);
//console.log(folders);
folders.data.forEach(function (folder) {
localProjects.push({id: folder.id, name: folder.title, hours: 0})
});
// console.log(localProjects)
localProjects.forEach(function(folder, index){
getFolderHours(folder,{start:start, end:end}, function (hours) {
console.log('Total hrs:'+ hours)
localProjects[index].hours = hours;
})
}); //end localprojects
console.log('responding')
res.send({totalHours: totalHours, projects:localProjects});
}); // end request timelog
我的回调函数如下
var getFolderHours = function (folder,period, callback) {
request.get('folders/'+folder.id+'/timelogs?trackedDate={"start":"'+period.start+'T00:00:00","end":"'+period.end+'T23:59:59"}',{
'auth': {
'bearer':Token
}
}, function (err, response, body){
var timelog = JSON.parse(body);
var hours = 0 ;
if (! err){
console.log('Name:'+ folder.name);
console.log('Hrs:'+ folder.hours);
// console.log('Id:'+ folder.id);
timelog.data.forEach(function (task) {
console.log('Adding:'+ task.hours);
hours += task.hours
});
callback(hours)
}
});
}
这是真棒!老兄。我一直在阅读有关承诺的内容,我认为我可以仅通过回调就可以做到这一点。我从节点j开始,我想遵循最佳实践,但我想我需要更多经验并阅读更多内容。谢谢,老兄任何提示是值得欢迎的。我真的很感谢你的帮助 –
我真的建议设计的NodeJS模式第2版,并通过实例工作。 –