CNode

新手入坑Node,为什么会是这个样子?

问答
Ccodinglilong发布于9 年前最后回复9 年前5 回复4186 浏览0 收藏

最新入坑node,自己写了个小爬虫去抓别人网站的接口,然后做个前后端分离的小程序。发现有下面这种情况我改如何解决? 1.jpg 2.jpg 3.jpg

只有最后一条才会被正确的接收。我的程序并不是settimeout,只是模拟下返回。加上Promise也还是没有用。我改怎么做?

查看回复

回复 (5)

C
codinglilong#1·9 年前

没人知道这个问题吗?

Z
zy445566#2·9 年前

哦,我知道是什么问题了 其实这是因为你的setTimeout运行的时候,res已经是最后一个了 和这个问题是一样的

for (var  i=0;i<10;i++){
setTimeout (()=>{
console .log (i);
},100)
}

这样会输出10个10,是因为循环完才执行settimeout 导致里面的值变了 你用了settimeout就会进入事件队列,你可以不用settimeout来模拟,你可以在res.end前面加大循环 或者在外围定义一个数组,接受到一个就push一个res,再在settimeout里面pop出res,再用res来end

纯手机打字难免格式不正确

T
Telanx#3·9 年前

404是不可能的,我测试过了,然而没有出现你这样的前3个是404,最后一个才是返回结果,不只能否给出全部的源码看一下

D
dayuoba#4·9 年前

不确定你后端代码是怎么写的,但是你可以把你express 里面最后两个中间件儿注释掉 测测看

C
codinglilong#5·9 年前
引用 Telanx404是不可能的,我测试过了,然而没有出现你这样的前3个是404,最后一个才是返回结果,不只能否给出全部的源码看一下

@Telanx 我也不知道为什么,但是我这就是全部代码了。前端就只有ajax请求。一次请求4条,后端就是接收get请求返回的。

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