请考虑以下示例:
var cb = function (t) {
console.log('callback -->' + t);
};
for(var i = 0; i<3; i++) {
console.log(i);
setTimeout(function(){
cb(i);
},1000);
}
Run Code Online (Sandbox Code Playgroud)
此代码段的输出是:
0
1
2
callback ---> 3
callback ---> 3
callback ---> 3
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,for循环将3个回调调用放入事件循环.在for循环结束时i == 3并且当回调被执行时,所有这些都打印3,因为它们包含到i的链接,即3.如何改进此代码片段以便在回调执行时它使用实际传递给它的价值.
输出应该是:
callback ---> 1
callback ---> 2
callback ---> 3
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我在我的网站上添加了一个类似Facebook的按钮,这是由Facebook工具生成的
http://developers.facebook.com/docs/reference/plugins/like/
它在FF和IE中完美运行
但是不想在Chrome 9中工作
有人知道为什么会这样吗?
我最近一直在运行几千个 phpunit 测试。我使用--process-isolation
选项,因此完成测试需要大约 40 分钟。
有时在积极的重构之后,很多测试开始失败(感谢上帝,我有测试!)。如果测试在测试套件中间失败,那么我必须再等 20 分钟才能查看它是什么测试以及它的消息。
--stop-on-failure
如果不中断整个过程,我会使用。基本上我正在寻找--log-on-failure
选择。
我正在寻找的是在测试失败后立即查看测试失败/错误消息的某种方式,而不是在所有其他测试完成后。但不应中断其他测试执行的整个过程。记录到文件也足够了。
我会很感激你的建议。
编辑:我很高兴看到您的建议,我可以在总体上改进我的测试,我会尝试遵循它们,但是我想找到解决我的确切问题的方法。
我正在运行 64x Ubuntu 12.10 并尝试使用 siege 2.70。问题是当我尝试测试服务器的 IP 地址或例如 google.com ip - 173.194.39.130 时
siege -g http://173.194.39.130
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[error] socket: unable to connect sock.c:222: Connection refused
Run Code Online (Sandbox Code Playgroud)
就是这样。
当我做
siege -g http://www.google.com
Run Code Online (Sandbox Code Playgroud)
我收到同样的错误和 200 有效响应。
什么可能导致问题?
我偶然发现了一个我无法解释的 JavaScript 变量行为。
用 var 声明的变量的作用域是封闭函数,或者对于在函数外部声明的变量,是全局作用域(绑定到全局对象)。
此外,众所周知,全局变量成为全局对象的属性 - 浏览器环境中的“window”和 Node.js 中的“global”这意味着,如果在函数内使用“var”关键字声明变量,则该变量将成为本地变量并执行不进入全局对象。
这个例子证明了这一点:
(function(){
var t = 1;
console.log(t in window, t); // outputs: false 1
}());
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。但是,如果变量未初始化,它就会成为窗口对象的属性,尽管它位于函数作用域中。
(function(){
var t;
console.log(t in window, t); // outputs: true undefined
}());
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?我在哪里可以了解此行为的详细信息?常规教程似乎没有涵盖这一点。
提前致谢。
[编辑]:多亏了 Pointy,现在很清楚范围可以按预期工作。我只是对“in”运算符的行为有错误的理解。根据“in”文档,它将左侧操作数强制为数字或字符串,并在右侧对象中查找此类索引或属性名称。所以在示例一中它等于
'1' in window
Run Code Online (Sandbox Code Playgroud)
这是假的
在示例二中是
'undefined' in window
Run Code Online (Sandbox Code Playgroud)
这是真的。
请看通讯说明
在第一个请求发送到客户端之前,如何获取设置为 set-cookie 标头的 cookie 的编码值?
使用 Express 3.x、cookieParser、expression-session 和 mongo 作为存储。
我试过:
req.cookies
但未在第一个请求中填充,因为客户端还没有 cookie。res.getHeader('set-cookie')
返回undefined
可能是因为它是在 express-session 调用 express 路由处理程序之后设置的。在服务器端,即使 request.cookie 为空,我如何才能访问处理程序中的 set-cookie 标头或响应对象中的 cookie 值?
javascript ×3
scope ×2
asynchronous ×1
button ×1
callback ×1
cookies ×1
facebook ×1
function ×1
linux ×1
load-testing ×1
networking ×1
node.js ×1
php ×1
phpunit ×1
sockets ×1
ubuntu ×1
unit-testing ×1
variables ×1