我正在尝试使用 Mocha 测试异步 JavaScript,但在循环异步填充数组时遇到一些问题。
\n\n我的目标是创建 N ( =arr.length) 个测试,每个测试对应数组的每个元素。
可能我缺少一些关于摩卡语义的东西。
\n\n到目前为止,这是我的(非工作的)简化代码:
\n\nvar arr = []\n\ndescribe("Array test", function(){\n\n before(function(done){\n setTimeout(function(){\n for(var i = 0; i < 5; i++){\n arr.push(Math.floor(Math.random() * 10))\n }\n\n done();\n }, 1000);\n });\n\n it(\'Testing elements\', function(){\n async.each(arr, function(el, cb){\n it("testing" + el, function(done){\n expect(el).to.be.a(\'number\');\n done()\n })\n cb()\n })\n })\n});\nRun Code Online (Sandbox Code Playgroud)\n\n我收到的输出是:
\n\n Array test\n \xe2\x9c\x93 Testing elements\n\n\n 1 passing (1s)\nRun Code Online (Sandbox Code Playgroud)\n\n我想要一个像这样的输出:
\n\n Array test\n Testing elements\n \xe2\x9c\x93 testing3\n \xe2\x9c\x93 testing5\n \xe2\x9c\x93 testing7\n …Run Code Online (Sandbox Code Playgroud) 我有以下(简化)标记代码:
<div id="container">
<div data-value="1">
<span>Click me 1</span>
</div>
<div data-value="2">
<span>Click me 2</span>
</div>
</div>
<div id="messages"></div>
Run Code Online (Sandbox Code Playgroud)
我想通过仅在其上附加事件监听器来利用冒泡#container,并获取被点击的子项data-value.
document.getElementById('container').addEventListener('click', function(e){
document.getElementById('messages').innerHTML = 'you clicked ' + e.target.dataset.value;
}, false);
Run Code Online (Sandbox Code Playgroud)
如果点击的区域是div区域(小提琴中的红色),一切正常.我怎样才能获得data-value也只有当点击来自DIV的儿童(如点击蓝色跨度)的数据值,而不改变事件监听器?
我有一个包含许多文档和索引字段的Solr实例.
我现在想要在查询上应用一个停用词列表以增加结果数量,方法是在查询时完全忽略停用词列表中包含的单词.
因此,在我的配置中,我solr.StopFilterFactory在query分析仪中使用.
我期待的是,如果我只使用停用词列表中的单个单词执行搜索,则结果集与通配符查询相同text_title:*,即完整文档集.
但相反,我得到0结果.我错过了关于停用词过滤器行为的一些内容吗?
我有一个简短的PHP实用程序脚本,我只是用cli从cli运行它:
php myscript.php
Run Code Online (Sandbox Code Playgroud)
脚本始终在运行,定期执行某些任务(与问题无关).它不需要用户的任何输入.运行之后,我通常按CTRL+ z然后运行bg将进程放在后台,一切都很好.
如果我运行它:
php myscript.php &
Run Code Online (Sandbox Code Playgroud)
脚本在启动时放在后台,但它也处于停止状态.例:
[1] 11513
[1]+ Stopped php myscript.php
Run Code Online (Sandbox Code Playgroud)
即使运行bg在这一点上没有帮助,我得赶紧走fg,然后CTRL+ z并bg再次,使其工作.
这是php脚本:
<?
while(true){
echo 'hi '.time()."\n";
sleep(30);
}
?>
Run Code Online (Sandbox Code Playgroud)
我的问题是我不能直接在后台运行它,因为系统会停止它,我不明白为什么.我怎样才能解决这个问题?
更新:
我制作了相同脚本的bash版本,它可以运行并放入后台(运行而不是停止),只需使用&在末尾启动它(script.sh &)
script.sh:
#!/bin/bash
while true; do
echo `date`
sleep 30
done
Run Code Online (Sandbox Code Playgroud)
为什么php脚本在后台启动后停止,而bash脚本没有?什么可能导致这种不同的行为?
我正在尝试将样式仅应用于元素的第一个子元素。我在 css 中使用 :first-child 来实现这一点,但看起来这不是我正在寻找的行为。
以以下标记为例:
<ul class="myUl">
<ul class="mySubUl">
<li>foo0</li>
<li>foo1</li>
</ul>
<ul class="mySubUl">
<li>foo2</li>
<li>foo3</li>
</ul>
</ul>
======================
<ul class="myUl">
<li>foo0</li>
<li>foo1</li>
<ul class="mySubUl">
<li>foo2</li>
<li>foo3</li>
</ul>
</ul>
Run Code Online (Sandbox Code Playgroud)
和这个简单的 CSS:
ul.myUl li:first-child {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
现场小提琴:http : //jsfiddle.net/bsSDh/1/
这不仅适用于ul.myUl元素的第一个子元素,也适用于 的第一个子元素ul.subUl。如果 CSS 选择器是ul li:first-child(有效),我会期望这种行为,但是由于我向选择器添加了一个类,我希望只将该样式应用于第一个孩子。
为什么这种风格不仅适用于第一个孩子?我是否遗漏了一些关于first-child规格的信息或以错误的方式使用选择器?