gpt4 book ai didi

node.js - Nodejs 将昂贵的同步任务转换为异步系列

转载 作者:太空宇宙 更新时间:2023-11-03 23:45:27 26 4
gpt4 key购买 nike

在nodejs中我有一个昂贵的函数,例如:

function expensiveCode(){
a.doExensiveOperation(1);
b.doAnotherExensiveOperation(2);
c.doADiffererentExensiveOperation(3);
d.doExensiveOperation(4);
}

这样每个子函数调用都有不同的参数,因此不能在循环中完成。我想限制这个昂贵的函数调用,以便每个子调用都在 nextTick 上完成,例如:

function expensiveCode(){
process.nextTick(function(){
a.doExensiveOperation(1);
process.nextTick(function(){
b.doAnotherExensiveOperation(2);
process.nextTick(function(){
c.doADiffererentExensiveOperation(3);
process.nextTick(function(){
d.doExensiveOperation(4);
});
});
});
});
}

这显然很丑陋,如果有 20 行不同的操作,那就太丑陋了,甚至无法考虑。

我已经审查了许多像“async.js”这样的库,但它们似乎都期望被调用的函数是异步的 - 在完成时有一个回调函数。我需要一种简单的方法来做到这一点,而不需要将所有代码转换为“完成时回调”方法,这似乎有点矫枉过正。

最佳答案

很抱歉让您的幻想破灭,但是 async.waterfallasync.seriesasync.apply 结合就是您想要的,并且是的,您需要使这些操作异步。我很难相信您发现了 20 个不同的计算密集型操作,其中没有一个执行任何 IO 操作。查看 bcrypt 库,了解如何提供 CPU 密集型调用的同步和异步版本的示例。在完成时将代码转换为回调并不是矫枉过正,而是 Node 。这就是 Node 中的规则。您的函数要么不执行 IO 并快速完成,要么将其与回调异步。选项结束。

关于node.js - Nodejs 将昂贵的同步任务转换为异步系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13980910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com