CNode

流程控制的大神进!(已解决)

问答
IIcego发布于12 年前最后回复12 年前13 回复5474 浏览0 收藏

目前用Node做抓取,流程如下, 1、读取目标地址配置列表(异步) 2、遍历配置列表抓取新闻列表得到内容页Url集合 3、遍历Url集合抓取内容页,同时入库。 此流程涉及多个异步,现流程有些许混乱。代码如下,请大神指点 myconfig.FindConfigList(function (err, ops) { //异步得到配置列表 async.forEachSeries(ops, function (_soption, callback) { //遍历配置列表 spider.getHtmlByUrl(_soption.url, _soption.decode, function (err, html) { //获取列表页, async.forEachSeries(urllist, function (url, cb) { //、遍历Url集合抓取内容页 mynews.InsertNew(news, function (err) {//异步入库 cb(); }); },function(err){ callback() } }); },function(err){ }); });

查看回复

回复 (13)

I
Icego#1·12 年前

现在是去掉外面层异步(用静态对象代替)正常,加上不正常

E
eeandrew#3·12 年前

使用markdown调整下格式。然后把问题说清楚吧。

I
Icego#4·12 年前
引用 eeandrew使用markdown调整下格式。然后把问题说清楚吧。

@eeandrew 哎,对node绝望了,这奇葩的错误信息,等于没有信息,这流程控制,稍微复杂点的逻辑就各种不稳定,搞的头疼!是不是 node真的不适合做逻辑复杂的程序

E
eeandrew#5·12 年前

@Icego 当然不是了。只是你还没学会异步控制的方法而已。推荐你来听听这个

I
Icego#6·12 年前
引用 eeandrew@Icego 当然不是了。只是你还没学会异步控制的方法而已。推荐你来听听这个

@eeandrew 恩,感觉Node中流程控制是一道坎,这个在上海啊,北京表示有点远!哈哈,

C
chloe#7·12 年前

你可以试试async.waterfall

I
Icego#8·12 年前
引用 chloe你可以试试async.waterfall

@chloe 恩,正在实验Async的各种用法

I
Icego#9·12 年前

通过对Asynch,360度旋转无死角的研究终于解决了,多谢各位。对异步编程有一更进一步的了解,感觉很棒。尤其是Callback

I
Icego#11·12 年前
引用 DevinXian@Icego 怒赞!后面可以看看eventproxy

@DevinXian 哈哈 你咋知道 我现在正在看eventproxy呢!?

D
DevinXian#12·12 年前
引用 Icego@DevinXian 哈哈 你咋知道 我现在正在看eventproxy呢!?

@Icego NodeJS不仅仅有TJ等各路大神,还有朴灵大神~~下次把代码整好看点

I
Icego#13·12 年前
引用 DevinXian@Icego NodeJS不仅仅有TJ等各路大神,还有朴灵大神 下次把代码整好看点

@DevinXian 哎呀,好的,这个是初次发帖,markdown还不是很熟悉,朴灵大师的《深入浅出Node》已经在手边了!

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