- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题确实让我想起了我对 JS 技能的了解......:(
我觉得我正处于风口浪尖,但我很难理解概念上要做什么,这与其说是语法问题,不如说我觉得我几乎破解了它。
我需要什么
我当前的代码(可以粘贴到控制台中)
var stringList = ['first test','second test'],
stringListLen = stringList.length;
for(var i = 0; i < stringListLen; i++){
// begin with first string and read it's length for iterations
var stringNumber = 0;
var currentString = stringList[stringNumber];
var currentStringLen = currentString.length;
// just see the word for clarification at this point in code
console.log(currentString);
(function (i) {
setTimeout(function () {
for (var j = 0; j < currentStringLen; j++) {
(function (j) {
setTimeout(function () {
// THE MAGIC HAPPENS HERE
console.log(j, currentString.charAt(j));
// End of string, so read next string, reset letter count
if(j === currentStringLen - 1){
stringNumber++;
currentString = stringList[stringNumber];
j = 0;
}
}, 300 * j); // each letter * specified delay
})(j);
};
}, currentStringLen * 300 * i); // letter * delay * letters in word
})(i);
}
问题
好处:我成功地获得了输出字母之间的短暂延迟,并且当我们到达第一个单词的末尾时,我切换到新单词并重置字母计数器的检查正在工作......
坏处:我无法让两个词之间的等待发挥作用。我尝试了一些想法,但让自己很困惑,我不知道我现在的方法是否正确。
丑陋的:最后一个术语的最后一个字母也没有输出,这完全出乎意料。
我尝试过的。
好吧,我尝试简单地将“currentStringLen * 300 * i”元素更改为各种看似合乎逻辑的组合,但没有更好或更坏的效果。最终我想我正在尝试计算“等待当前字符串中的字母数乘以 300(字母延迟)*”<---- STRIKETHROUGH...
我实际上不知道我在计算什么,这就是问题所在。
我现在想我想把它分成两个函数,而不是两个嵌套函数。一个读取字符串并将其传递给另一个函数,该函数仅在短时间内输出字母,然后一旦到达最后一个字母,它就会调用第一个函数,询问下一个单词。但是我仍然需要递归数组中的字符串数量,这会产生相同的问题......
我是否遗漏了一些基本的东西?
最佳答案
这大概是您的想法吗?
function printLetters(stringList) {
var wordIndex = 0,
letterIndex = 0;
printNext();
function printNext() {
var word = stringList[wordIndex];
var letter = word.charAt(letterIndex);
console.log(letter);
++letterIndex;
if (letterIndex === word.length) {
letterIndex = 0;
++wordIndex;
if (wordIndex < stringList.length) {
setTimeout(printNext, 2000);
}
return;
}
setTimeout(printNext, 300);
}
}
printLetters(['first test', 'second test']);
这里一次只有一个 setTimeout
运行,并且根据需要在适当的时间设置一个新的。
虽然我不建议同时运行多个计时器,但这是可以做到的。像这样的事情:
function printLetters(stringList) {
var letterCount = 0,
startTime = Date.now();
stringList.forEach(function(word, wordCount) {
word.split('').forEach(function(letter) {
setTimeout(function() {
console.log(letter, Date.now() - startTime);
}, wordCount * 1700 + (letterCount * 300));
++letterCount;
});
});
}
printLetters(['first test', 'second test']);
在这里,我在日志记录中包含了时间增量,以便更好地了解何时发生的情况。字符串之间的间隙是 2000,但代码中的常量是 1700,因为已经添加了 300。
关于javascript - setTimeout 和递归 IFFE,嵌套!?如何计算延迟。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46164208/
我想编写一个断言样式的宏,它仅在我在调试器中运行程序时才停止。据我所知,我机器上唯一可用的调试器是 gdb,所以我将讨论那个。 SIGTRAP 信号的文档表明它用于暂停调试器,因此我应该能够放置 if
我在 Coq 中证明矛盾事物的经验非常有限,我无法找到一种明确的方法来用基本策略证明以下定理: Theorem thrm : forall a, not (iff a (not a)). 我可以立即用
考虑以下几点: var x = (function(){ var _private = 'start'; var _x = function(text){ if(tex
我有一个格式为 test2#.iff 的文件序列,我想将此序列转换为视频,我尝试了以下命令: ffmpeg -f IFF -r 25 -start_number 75 -i "test2%d.iff"
这两个闭包示例的优点是在后续函数调用中保留 count 的值,否则(如果未使用闭包),count 将在每次函数调用后重置为 0。此外,在这两种情况下,count 变量(与 block 中的任何 l
这个问题已经有答案了: What are the rules for JavaScript's automatic semicolon insertion (ASI)? (7 个回答) 已关闭 3 年
我以前没有使用过访问,但我必须将访问查询转换为 SQL,以便我可以用 crystal 编写报告。 查询当前在其选择语句中使用 IFF 函数,该函数似乎可以根据特定列的表值来确定将返回什么值。 例如,如
真值表: P------------Q------------XOR------------IMPLIES---- -------当机立断 T------------T------------F---
我真的需要一些帮助/建议。我有 4 个参数: 1) DATE 2) Hashtag 3) Make 4) Model 我正在尝试构建一个查询,用户可以将 Hashtag、Make 或 Model 参数
如何读取文件 IFF 光栅图形并对其进行更改? 最佳答案 显然是Java Imaging Utilities库有一个内置的编解码器。我自己从未使用过它,但我确实下载了它并查看了手册;看起来不错。 关于
问题 我在处理应用时没有收到推送通知, 并且 APN 服务器返回“BadDeviceToken”。 情况 我必须在这里遗漏一些简单的东西,就是这种情况: 当我向从 App Store 下载的应用程序发
有没有办法写一个iff Python 中的语句(即当且仅当)? 我想像这样使用它 for i in range(x) iff x%2==0 and x%i==0: 但是,Python 中没有任
对于这段代码,我看到两个断言都失败了。似乎禁用 iff (value) 的计算晚于表达式本身。有人可以解释一下。 module tb(); reg clk = 1; always #5 clk = !
我必须做出的一种常见证明是这样的 Lemma my_lemma : forall y, (forall x x', Q x x' y) -> (forall x x', P x y P x' y).
我正在尝试将访问 IFF 查询转换为 SQL Server 查询 SELECT blah blah , IIf([stock]![supplier]=[pos]![supplier],"Pre
我必须做出的一种常见证明是这样的 Lemma my_lemma : forall y, (forall x x', Q x x' y) -> (forall x x', P x y P x' y).
这个问题确实让我想起了我对 JS 技能的了解......:( 我觉得我正处于风口浪尖,但我很难理解概念上要做什么,这与其说是语法问题,不如说我觉得我几乎破解了它。 我需要什么 我正在尝试 consol
假设我有一个带有方法 foo() 的 javascript 类。在另一种方法中,f.e componentDidMount,我想在 iffe 中访问方法 foo()。我如何绑定(bind) 'this
我有一个 IFF 样式的文件(见下文),我需要在 Python 中检查其内容。 https://en.wikipedia.org/wiki/Interchange_File_Format 我可以使用以
我有一些 Javascript 代码分布在多个文件中,但我想通过 IFFE 来促进缩小。有些方法必须保持公开。 Wikipedia建议访问器的实现: var counter = (function()
我是一名优秀的程序员,十分优秀!