等待callback完成的性能影响是什么?

我一直在用Node.js编程一段时间,我发现自己变得越来越恼火,需要链接callback。 例如,当您需要如图所示的数据库中的多个模型时:

Person.findOne({ 'name.last': 'Ghost' }, 'name occupation', function (err, person) { Schedule.findOne({'person_id': person.id }, 'events', function(err, schedule) { ... } }) 

我正在寻找解决这个问题的方法。 我有一个想法是做这样的事情:

 function() { var p; var s; var done = false; Person.findOne(..., ..., function(err, person) { p = person; done = true; }); while(!done){} done = false; Schedule.findOne(..., ..., function(err, schedule) { s = schedule; done = true; }); while(!done){} done = false; // ... } 

如果我这样做我的查询,性能影响是什么? 我也愿意解决这个问题的其他想法。

为了回答你最直接的问题,旋转等待callback的性能意味着,旋转等待可能会在同一进程或同一台机器上完成其他更有用的任务。 如果您的应用程序在没有电源pipe理的单用户计算机上运行,​​这并不重要,但这两者都不可能。 忙碌的等待将会破坏移动平台上的电池使用寿命,增加数据中心的电力成本,并使未来的代码维护者诅咒你的名字!

正如elclanrs在评论中已经提出的那样,你可以看看“ asynchronous ”库来帮助简化你的代码,但是无论如何你应该避免忙于等待。