- 在nodejs下开发,发送http请求,一直没有response(回调一直没有触发……)
- nodejs文档中的例子,在回调中调用req.end()。这是错误的,必须在发送请求的代码段中调用,var req =http.request(opts, callback)。而不是在callback里调用……
- 错误示例, var req = http.request(opts, function(res){...; req.end();})
- 修正示例, var req = http.request(opts, function(res){...;}; req.end();
- javascript 循环中回调函数闭包引发的杯具
- for(var i = array.length; i--;) setTimeout(function(){console.log(array[i])}, 100);
- 输出全部为:undefined
- 解决:
function bugFix(unit){setTimeout(function(){console.log(unit)}, 100)}
for(var i = array.length; i--;) bugFix(array[i]);
- express编写rest服务,server已经使用server.use(express.bodyParser()),但请求中仍没有解释body。
- 客户端发送的请求中,headers里加入"content-type":"application/json"。那么express就会自动解析json,req.body就会有东西……
- 由于测试用例里,缺少这个,所以,req.body一直undefined...
回复 (4)
C
呵呵,我错了两次,才想着把它写下来……
javascript的作用域,是函数级的
A
我误解了js的变量作用域,花括号无法形成一个作用域,所以循环内定义的变量依旧是全局的
A
对不起,我没经过验证就下了结论,我的方法是错误的
哪位来解答一下
A
第二个不用重新定义一个函数,这样就可以了
for(var i = array.length; i–;) {
var val = array[i];
setTimeout(function(){console.log(val)}, 100);
}
参与回复
登录后即可参与回复。登录