nodejs除了通过async模块来控制并发以外还有别的方式吗?
发布于 8 年前 作者 hujianxin 4511 次浏览 来自 问答

本人node新手,刚接触node,对于异步的编程方式还是不了解。

我在爬取一个网站的时候,想要用map函数来并发的获取1000个网址。但是并发数太多的话容易被禁。了解到async模块可以非常好的解决这个问题,请问还有别的方式来解决这个问题吗?谢谢大家

15 回复

我用的httpclient是axios

async是回调风格的,对初学者友好,并发数限制mapLimit也有的,eventproxy亦然。Promise流派的可以使用bluebird,如果node版本高,原生Promise用着也自然

那为什么不用async呢

来自酷炫的 CNodeMD

@DevinXian 你好,谢谢回复。

@dbit-xia 我想了解一下这个问题还有更好的思路没

@DevinXian 刚看到你的回复,我就去查了相关的概念,收获很大,非常感谢。 请教一下,现在主流的方式是什么呢?是async来处理回调函数呢,还是使用Promise+co这样的库来实现呢,还是Promise+async/await来实现呢? 另外,我看到co这个库也非常不活跃了。那现在如果使用Promise方式来开发的话,还推荐使用co吗?不使用co的话,只能使用async/await来实现了吧?

@hujianxin 推荐使用co啊 或者使用bluebird

@magicdawn 你造了不少轮子啊

@hujianxin 目前都在趋向语言层面上的同步,所以直接上async/await没问题,用这个离不开Promise的哦

@hapiman 谢谢推荐,我发现co的开发很不活跃了,原作者不干了。我打算使用async/await,因为我不用在项目上,node最新版也支持async/await了。

@DevinXian 谢谢推荐,我也是这样想的,直接用node最新版,连babel都不需要了。离不开Promise没问题,感觉这是个趋势,我使用的httpclient是axios,也是Promise的,完全没问题。

@magicdawn 谢谢,我打算使用async/await了。

@DevinXian 连bluebird都不需要了,能用原生的就用原生的。。。

@DevinXian

是啊…先找一圈, 没找到合适的就自己开干了…

回到顶部