小编Igo*_*lyk的帖子

JavaScript异步回调和范围

请考虑以下示例:

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)

jsfiddle的工作示例

此代码段的输出是:

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)

提前致谢.

javascript scope asynchronous callback

13
推荐指数
2
解决办法
5560
查看次数

Facebook之类的按钮不会在Chrome中显示

我在我的网站上添加了一个类似Facebook的按钮,这是由Facebook工具生成的

http://developers.facebook.com/docs/reference/plugins/like/

它在FF和IE中完美运行

在此输入图像描述

但是不想在Chrome 9中工作

在此输入图像描述

有人知道为什么会这样吗?

facebook google-chrome button

10
推荐指数
1
解决办法
1万
查看次数

PHPUnit 实时登录失败/错误

我最近一直在运行几千个 phpunit 测试。我使用--process-isolation选项,因此完成测试需要大约 40 分钟。

有时在积极的重构之后,很多测试开始失败(感谢上帝,我有测试!)。如果测试在测试套件中间失败,那么我必须再等 20 分钟才能查看它是什么测试以及它的消息。

--stop-on-failure如果不中断整个过程,我会使用。基本上我正在寻找--log-on-failure选择。

我正在寻找的是在测试失败后立即查看测试失败/错误消息的某种方式,而不是在所有其他测试完成后。但不应中断其他测试执行的整个过程。记录到文件也足够了。

我会很感激你的建议。

编辑:我很高兴看到您的建议,我可以在总体上改进我的测试,我会尝试遵循它们,但是我想找到解决我的确切问题的方法。

php phpunit unit-testing

5
推荐指数
1
解决办法
1263
查看次数

Siege 启动错误 - 无法连接到套接字

我正在运行 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 有效响应。

什么可能导致问题?

sockets linux ubuntu networking load-testing

5
推荐指数
1
解决办法
4285
查看次数

为什么JavaScript声明的变量在初始化之前就在全局对象中?

我偶然发现了一个我无法解释的 JavaScript 变量行为。

根据var 关键字的 JS 文档

用 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)

jsfiddle 链接

到目前为止,一切都很好。但是,如果变量未初始化,它就会成为窗口对象的属性,尽管它位于函数作用域中。

(function(){
    var t;
    console.log(t in window, t); // outputs: true undefined
}());
Run Code Online (Sandbox Code Playgroud)

jsfiddle 链接

为什么会发生这种情况?我在哪里可以了解此行为的详细信息?常规教程似乎没有涵盖这一点。

提前致谢。

[编辑]:多亏了 Pointy,现在很清楚范围可以按预期工作。我只是对“in”运算符的行为有错误的理解。根据“in”文档,它将左侧操作数强制为数字或字符串,并在右侧对象中查找此类索引或属性名称。所以在示例一中它等于

'1' in window
Run Code Online (Sandbox Code Playgroud)

这是假的

在示例二中是

'undefined' in window
Run Code Online (Sandbox Code Playgroud)

这是真的。

javascript variables scope function global-variables

5
推荐指数
1
解决办法
2131
查看次数

获取快速编码的 cookie 作为标头值

请看通讯说明

  1. 客户端 --- POST /login(还没有 cookie)---> 节点服务器
  2. 节点服务器 ---> 'set-cookie' : '…' -> 客户端(设置 cookie 并将其用于下一个请求)

在第一个请求发送到客户端之前,如何获取设置为 set-cookie 标头的 cookie 的编码值?

使用 Express 3.x、cookieParser、expression-session 和 mongo 作为存储。

我试过:

  1. 访问req.cookies但未在第一个请求中填充,因为客户端还没有 cookie。
  2. res.getHeader('set-cookie')返回undefined可能是因为它是在 express-session 调用 express 路由处理程序之后设置的。

在服务器端,即使 request.cookie 为空,我如何才能访问处理程序中的 set-cookie 标头或响应对象中的 cookie 值?

javascript cookies session-cookies node.js

3
推荐指数
1
解决办法
1000
查看次数