微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 等待回调完成的性能影响是什么?

我已经使用Node.js编程了一段时间,我发现自己越来越厌烦需要链接回调.例如,当您需要数据库中的多个模型时,如下所示:

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;

    // ...
}

如果我这样做我的查询,性能影响是什么?我也对解决这个问题的其他想法持开放态度.

解决方法:

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

正如elclanrs已在评论中建议的那样,您可以查看“async”库以帮助简化您的代码,但无论如何您应该避免忙于等待.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐