试图理解CoffeeScript实例和类变量是如何工作的我带来了这段代码(结果在评论中).
class A
x: 1
@y: 2
constructor: (@z) ->
#console.log "const x", x #ReferenceError: x is not defined
console.log "constructor y", @y #undefined
console.log "constructor z", @z # = 3 for A and 6 for B
get: () ->
#console.log "get x", x #ReferenceError: x is not defined
console.log "get y", @y #undefined
console.log "get z", @z # = 3 for A and 6 for B
get2: () =>
#console.log "get2 x", x #ReferenceError: x is not defined
console.log …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,我正在部署到Nodejitsu.最近,他们遇到了npm问题导致我的应用程序在我尝试(并且失败)重启后几个小时后离线,因为无法安装其依赖项.有人告诉我,将来可以通过列出bundledDependencies我的package.json中的所有依赖项来避免这种情况,从而导致依赖项与应用程序的其余部分一起上传.这意味着我需要我的package.json看起来像这样:
"dependencies": {
"express": "2.5.8",
"mongoose": "2.5.9",
"stylus": "0.24.0"
},
"bundledDependencies": [
"express",
"mongoose",
"stylus"
]
Run Code Online (Sandbox Code Playgroud)
现在,在DRY的基础上,这是没有吸引力的.但更糟糕的是维护:每次添加或删除依赖项时,我都必须在两个地方进行更改.是否有一个命令,我可以使用同步bundledDependencies用dependencies?
我的页面上运行了一段JavaScript代码; 我们称之为func1.运行需要几毫秒.当该代码正在运行时,用户可以单击,移动鼠标,输入一些键盘输入等.我有另一个代码块func2,我希望在所有这些排队的输入事件都已解决后运行.也就是说,我想确保订单:
func1func1正在运行时发生的输入事件func2我的问题是:在呼唤setTimeout func2, 0,在年底func1足以保证此排序,在所有现代浏览器?如果那条线在那个开始时出现怎么样func1?在那种情况下我应该期待什么?
请通过参考相关规范或测试用例来备份您的答案.
更新:事实证明,不,这还不够.我在原始问题中没有意识到的是,在执行当前代码块之前,输入事件甚至没有添加到队列中.所以,如果我写
// time-consuming loop...
setTimeout func2, 0
Run Code Online (Sandbox Code Playgroud)
然后,只有在setTimeout运行之后,才会将在耗时循环期间发生的任何输入事件(点击等)排队.(为了测试这一点,请注意,如果在耗时的循环之后onclick立即删除回调,那么在循环期间发生的单击将不会触发该回调.)因此首先排队并优先.func2
设置超时1似乎可以解决Chrome和Safari中的问题,但在Firefox中,我看到输出事件在超时80(!)之后解决.所以纯粹基于时间的方法显然不会做我想要的.
简单地将一个包裹setTimeout ... 0在另一个内部也不够.(我希望第一次超时会在输入事件排队后触发,第二次超时会在解决之后触发.没有这样的运气.)也没有添加第三或第四级别的嵌套就足够了(参见下面的更新2) ).
所以,如果有人有办法实现我所描述的(除了设置90+毫秒的超时),我将非常感激.或者使用当前的JavaScript事件模型这是不可能的?
这是我最新的JSFiddle测试平台:http://jsfiddle.net/EJNSu/7/
更新2:部分解决方法是嵌套func2在两个超时内,在第一个超时中删除所有输入事件处理程序.但是,这会产生令人遗憾的副作用,导致func1无法解决期间发生的某些甚至所有输入事件.(前往http://jsfiddle.net/EJNSu/10/并尝试快速点击链接几次以观察此行为.警报会告诉您有多少次点击?)所以这再一次让我感到惊讶; 我不认为调用setTimeout func2, 0,func2设置onclick为null,可以阻止回调运行以响应一整秒前发生的点击.我想确保所有输入事件都会触发,但我的函数会在它们之后触发. …
所以,我有一个我认为是一个相当简单的Capistrano用例:我想从Github部署一个PHP站点.但是我遇到了很多问题.当我跑步时cap deploy,Capistrano能够克隆Github仓库(deploy:update_code步骤),但随后在deploy:finalize_update步骤中说
executing "rm -rf /var/www/sitename.com/releases/20100611144519/log /var/www/sitename.com/releases/20100611144519/public/system /var/www/sitename.com/releases/20100611144519/tmp/pids &&\\\n mkdir -p /var/www/sitename.com/releases/20100611144519/public &&\\\n mkdir -p /var/www/sitename.com/releases/20100611144519/tmp &&\\\n ln -s /var/www/sitename.com/shared/log /var/www/sitename.com/releases/20100611144519/log &&\\\n ln -s /var/www/sitename.com/shared/system /var/www/sitename.com/releases/20100611144519/public/system &&\\\n ln -s /var/www/sitename.com/shared/pids /var/www/sitename.com/releases/20100611144519/tmp/pids"
Run Code Online (Sandbox Code Playgroud)
其次是
executing "find /var/www/sitename.com/releases/20100611144519/public/images /var/www/sitename.com/releases/20100611144519/public/stylesheets /var/www/sitename.com/releases/20100611144519/public/javascripts -exec touch -t 201006111445.23 {} ';'; true"
Run Code Online (Sandbox Code Playgroud)
我真的不明白这里发生了什么.然后它给出一个错误:
*** [err :: sitename.com] find: `/var/www/sitename.com/releases/20100611144519/public/images': No such file or directory
Run Code Online (Sandbox Code Playgroud)
每个stylesheets和javascripts目录的另一个错误.
这是怎么回事?我意识到Capistrano主要用于部署Rails和其他Ruby应用程序,但我使用的是capistrano-php gem.我很感激任何帮助.
我知道我可以写:
foo = 'bar'
def update_foo():
global foo
foo = 'baz'
Run Code Online (Sandbox Code Playgroud)
但我真的需要两行代码吗?Python,唉,不允许我说
global foo = 'baz'
Run Code Online (Sandbox Code Playgroud)
我还可以将两条线混合在一起,不幸的是重复
global foo; foo = 'baz'
Run Code Online (Sandbox Code Playgroud)
还有其他快捷方式吗?我正在使用Python 2.6.5,但我很想知道Python 3的响应.
我注意到Node定义了两者process.argv和process.ARGV(大写).文档中没有提到后者,并且在目前为止我遇到的每一种情况都是相同的对象.
是否ARGV只是一个历史悠久的保持,或者它有一个目的?
我喜欢Rails 3易于安装:gem install rails --pre并且所有依赖项都会自动为您安装.但是,卸载它呢?如果我这样做gem uninstall rails,我仍然有
actionmailer (3.0.0.beta3)
actionpack (3.0.0.beta3)
activemodel (3.0.0.beta3)
activerecord (3.0.0.beta3)
activeresource (3.0.0.beta3)
activesupport (3.0.0.beta3)
Run Code Online (Sandbox Code Playgroud)
我想摆脱它.最简单的方法是什么?
根据PyMongo 文档,update()一次只能更新一个文档.假设我有100个文档要同时更新.这是很多开销.有没有办法通过PyMongo使用单个MongoDB查询更新多个文档?
在Java中,==是最强的等式(指针相等):a == b总是暗示a.equals(b).但是,在Ruby中,==弱于.equals?:
ruby-1.9.2-rc2 > 17 == 17.0
=> true
ruby-1.9.2-rc2 > 17.equal?(17.0)
=> false
Run Code Online (Sandbox Code Playgroud)
那么,我在哪里可以了解更多信息==?当我将两个对象与它进行比较时,我应该期待什么样的检查?
node.js ×3
javascript ×2
argv ×1
capistrano ×1
coffeescript ×1
deployment ×1
dom ×1
equals ×1
input ×1
mongodb ×1
nodejitsu ×1
npm ×1
process ×1
pymongo ×1
python ×1
ruby ×1
rubygems ×1