请考虑以下以串行/顺序方式读取文件数组的代码.readFiles返回一个promise,只有在按顺序读取所有文件后才会解析.
var readFile = function(file) {
... // Returns a promise.
};
var readFiles = function(files) {
return new Promise((resolve, reject) =>
var readSequential = function(index) {
if (index >= files.length) {
resolve();
} else {
readFile(files[index]).then(function() {
readSequential(index + 1);
}).catch(reject);
}
};
readSequential(0); // Start!
});
};
Run Code Online (Sandbox Code Playgroud)
上面的代码可以工作,但我不喜欢按顺序进行递归递归.是否有一种更简单的方法可以重写此代码,以便我不必使用我的奇怪readSequential功能?
最初我试图使用Promise.all,但这导致所有readFile调用同时发生,这不是我想要的:
var readFiles = function(files) {
return Promise.all(files.map(function(file) {
return readFile(file);
}));
};
Run Code Online (Sandbox Code Playgroud) 假设我想拥有10行数据,但我想为每行或每段数据增加一个值.如何增加该值?
例如....如果我有这些行,是否有一种正则表达式替换id值来增加?
<row id="1" />
<row id="1" />
<row id="1" />
<row id="1" />
<row id="1" />
Run Code Online (Sandbox Code Playgroud)
---这就是我希望它看起来像......(如果第一行的id上升一个就好了)
<row id="1" />
<row id="2" />
<row id="3" />
<row id="4" />
<row id="5" />
Run Code Online (Sandbox Code Playgroud) 我需要测试以下方法:
CreateOutput(IWriter writer)
{
writer.Write(type);
writer.Write(id);
writer.Write(sender);
// many more Write()s...
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个Moq'd IWriter,我想确保Write()以正确的顺序调用这些方法.
我有以下测试代码:
var mockWriter = new Mock<IWriter>(MockBehavior.Strict);
var sequence = new MockSequence();
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedType));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedId));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedSender));
Run Code Online (Sandbox Code Playgroud)
但是,第二次调用Write()in CreateOutput()(写入id值)会抛出一条MockException消息" IWriter.Write()调用失败,模拟行为为Strict.模拟上的所有调用都必须有相应的设置. "
我也发现很难找到任何明确的,最新的Moq序列文档/示例.
我做错了什么,或者我不能使用相同的方法设置序列?如果没有,有没有我可以使用的替代品(最好使用Moq/NUnit)?
有没有办法在vi(m)中生成数字序列?
例如,从文件中的随机行(在vim中打开),比如Row-i - 到随机行,比如Row-j,其中Row-i <Row-j,有没有办法从Row生成数字序列-i到Row-j从数字1开始到数字j-i + 1,步长增量为1?
假设我在文件中有以下行.
this is line #1
this is line #2
this is line #3
this is line #4
this is line #5
this is line #6
this is line #7
this is line #8
this is line #9
this is line #10
Run Code Online (Sandbox Code Playgroud)
我想要从第4行到第8行的数字序列作为前缀,从数字1到数字5开始.操作后,生成的文件应如下所示:
this is line #1
this is line #2
this is line #3
1 this is line #4
2 this is line #5
3 this is line #6
4 this is line …Run Code Online (Sandbox Code Playgroud) 有没有在python中连续两次或更多次调用函数的简短方法?例如:
do()
do()
do()
Run Code Online (Sandbox Code Playgroud)
也许像:
3*do()
Run Code Online (Sandbox Code Playgroud) 我想使用一些算法来挖掘我的日志数据.
我找到了一个模式挖掘框架:http://www.philippe-fournier-viger.com/spmf/index.php?link = _algorithms.php
我尝试了几种算法,BIDE +算法表现最佳.
BIDE +算法用于从序列数据库中挖掘频繁闭合的序列模式.
有人可以解释关于"封闭"序列模式和开放模式的定义吗?
我使用jQuery.而且我不希望在我的应用程序上进行并行AJAX调用,每个调用必须在开始之前等待之前的调用.怎么实现呢?有帮助吗?
更新如果有XMLHttpRequest或jQuery.post的任何同步版本,我想知道.但顺序!=同步,我想要一个异步和顺序的解决方案.
在Repa中,我想d在我的数组的最内层维度上并行应用一定的线性变换,即在所有"列"向量上.
通常,这样的变换可以表示为一个矩阵M,并且各条目M*v只是适当的行的点积M用v.所以我可以使用traverse一个计算相应点积的函数.这需要付出代价d^2.
但是,我M很特别:它承认了线性工作顺序算法.例如,M可能是1整个下三角形中具有s的下三角矩阵.然后M*v只是部分和的向量v(又名"扫描").这些总和可以以显而易见的方式顺序计算,但是需要结果的(i-1)st条目来i有效地计算该条目.(我有几个这样的M,所有这些都可以在线性顺序时间内以一种方式计算.)
我没有看到任何明显的使用方法traverse(或任何其他的维修功能)来利用这个属性M.可以吗?d^2当有如此快速的线性工作算法时,使用工作算法(即使具有丰富的并行性)将是非常浪费的.
(我看过一些旧的SO帖子(例如,这里)提出类似的问题,但没有什么能与我的情况相符.)
UPDATE
根据请求,这里是一些说明性代码,用于M计算部分和(如上所述).正如我所料,运行时(work)以超线性方式增长d,即array(ext)范围的第二个参数.这来自于这样的事实:mulM'仅指定如何计算i输出的条目,而与所有其他条目无关.即使在阵列的总大小中存在线性时间算法,我也不知道如何在Repa中表达它.
有趣的是,如果删除定义该清单中的线array'从main,则运行时仅线性比例在所述阵列的总大小!因此,当数组被"一直向下"延迟时,融合/优化必须以某种方式提取线性工作算法,但没有任何明确的帮助.这太棒了,但对我来说也不是很有用,因为实际上我需要调用mulM清单数组.
{-# LANGUAGE TypeOperators, ScopedTypeVariables, FlexibleContexts #-}
module Main where
import Data.Array.Repa as R
-- multiplication by M across …Run Code Online (Sandbox Code Playgroud) 在promise库Q中,您可以执行以下操作来按顺序链接promise:
var items = ['one', 'two', 'three'];
var chain = Q();
items.forEach(function (el) {
chain = chain.then(foo(el));
});
return chain;
Run Code Online (Sandbox Code Playgroud)
但是,以下内容不适用于$ q:
var items = ['one', 'two', 'three'];
var chain = $q();
items.forEach(function (el) {
chain = chain.then(foo(el));
});
return chain;
Run Code Online (Sandbox Code Playgroud) sequential ×10
q ×2
ajax ×1
angularjs ×1
apriori ×1
c# ×1
chaining ×1
consistency ×1
data-mining ×1
function ×1
haskell ×1
javascript ×1
jquery ×1
moq ×1
notepad++ ×1
nunit ×1
promise ×1
python ×1
regex ×1
repa ×1
shortcut ×1
unit-testing ×1
vi ×1
vim ×1