这个 marco task 跟 JS 的 marco task 还是有些许不同。JS 每一次 event loop 只会处理当前已经在 queue 里面的 tasks,之后新加的只会等到下一次 loop 再处理。
From MDN:
When executing tasks from the task queue, the runtime executes each task that is in the queue
at the moment a new iteration of the event loop begins.
Tasks added to the queue after the iteration begins will not run until the next iteration.
Each time a task exits, and the execution context stack is empty, each microtask in
the microtask queue is executed, one after another. The difference is that execution
of microtasks continues until the queue is empty—even if new ones are scheduled
in the interim. In other words, microtasks can enqueue new microtasks and those
new microtasks will execute before the next task begins to run, and before the end
of the current event loop iteration.
如果把楼主 repo 里的 sample.js 改成这样,就能比较清晰看到 task 跟 mirco task 的不同了
settimeout_macro_task("macro 1", () => promise_micro_task("macro1-micro1"))
settimeout_macro_task("macro 2")
settimeout_macro_task("macro 3")
console.log("第一个出现")
promise_micro_task("micro 1", () => settimeout_macro_task("micro1-macro1", () => promise_micro_task("micro1-macro1-micro 1")))
promise_micro_task("micro 2")
promise_micro_task("micro 3")
我只看了clone
的文档,没看dup
的。其实文档里面都有提到。
dup copies the tainted state of obj.
http://ruby-doc.org/core-2.1.3/Object.html#method-i-dup
ruby 的 dup
跟 clone
还有一个不同是 clone
会保存 object 的 state。
Copies the frozen and tainted state of obj.
拷贝还有一个 initialize_copy
method 可以了解一下,相关文章
http://www.jonathanleighton.com/articles/2011/initialize_clone-initialize_dup-and-initialize_copy-in-ruby/
据说是利用Fiber
来实现的
这里是另外一种作法,https://gist.github.com/wojtha/8433843
默认的 exceptions_app 是ActionDispatch::PublicExceptions
的一个实例,它会在 ShowExceptions 这个 middleware 中被通过 call 来调用。
所以我们可以将其替换成一个 lambda 或者是直接一个 rack 的 middleware。
可惜今晚有事去不了,玩的开心!
一个中文字符好像是占了两个英文字符的位置,比如 "测试"的显示长度跟'test'的是一样的 所以 printf 的时候可能要将中文字符串的 length *2
小步升级,升到 ruby1.9.3,然后升级到 rails 3 如果客户还不满意,再升级到 ruby 2,rails 4
去年去菲律宾一个小岛旅游的照片
:thumbsup:
render partial 不行?
c-p 下按 F5 刷新就好了
就弄成 factory_girl => factory_girl_rails, rspec => rspec-rails 这种吧
支持
我是来打酱油的
nice
Mac 下的 chrome 也会中招......
没插入,hash 取不到值时才会返回默认值的
1.9.3p429 :001 > a = Hash.new([])
=> {}
1.9.3p429 :002 > a['asd'].push(1,2)
=> [1, 2]
1.9.3p429 :003 > a
=> {}
1.9.3p429 :006 > a['123']
=> [1, 2]
要插入的话在要在 new 后面加上 block http://ruby-doc.org/core-1.9.3/Hash.html#method-c-new
要善用 ruby-china 的搜索,搜一下就有了