CNode

nodejs除了通过async模块来控制并发以外还有别的方式吗?

问答
Hhujianxin发布于10 年前最后回复10 年前15 回复4967 浏览0 收藏

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

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

查看回复

回复 (15)

H
hujianxin#1·10 年前

我用的httpclient是axios

D
DevinXian#2·10 年前

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

D
dbit-xia#3·10 年前

那为什么不用async呢

来自酷炫的 CNodeMD

H
hujianxin#5·10 年前
引用 dbit-xia那为什么不用async呢 来自酷炫的 CNodeMD

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

H
hujianxin#6·10 年前
引用 DevinXianasync是回调风格的,对初学者友好,并发数限制mapLimit也有的,eventproxy亦然。Promise流派的可以使用bluebird,如果node版本高,原生Promise用着也自然

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

D
DevinXian#9·10 年前
引用 magicdawnhttps://github.com/magicdawn/promise.map

@magicdawn 你造了不少轮子啊

H
hujianxin#11·10 年前
引用 hapiman@hujianxin 推荐使用co啊 或者使用bluebird

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

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

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

H
hujianxin#13·10 年前
引用 magicdawnhttps://github.com/magicdawn/promise.map

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

H
hujianxin#14·10 年前
M
magicdawn#15·10 年前
引用 DevinXian@magicdawn 你造了不少轮子啊

@DevinXian

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

参与回复
登录后即可参与回复。登录