我的代码将按照我想要的顺序记录所有10行(降序三角形),但我需要它在记录每个连续行之前延迟1秒。我尝试在for循环之前放置一个setTimeout,但这只是在同时打印所有10行之前造成了1秒的延迟。
function minusTen(num) {
var arr = '';
for (var i = num; i > 0; i--) {
arr += '*';
}
var newArr = arr.split('');
for (var j = num; j > 0; j--) {
newArr.pop();
console.log(newArr.join(' '));
}
}
minusTen(10);
我可以使用jQuery,但是我希望尽可能避免实现Bootstrap。
谢谢!
答案 0 :(得分:1)
您可以使用setTimeout
,但是您必须将setTimeout
保留在for循环中。如果num变为0,你也可以在这里使用setInterval
并清除间隔:
function minusTen(num) {
var arr = '';
for (var i = num; i > 0; i--) {
arr += '*';
}
var newArr = arr.split('');
var interval = setInterval(function(){
newArr.pop();
console.log(newArr.join(' '));
num--;
if(!num)
clearInterval(interval);
}, 1000)
}
minusTen(10);

答案 1 :(得分:0)
您可以使用某项功能。检查.length
的{{1}},如果大于newArr
,请再次拨打电话
0

答案 2 :(得分:0)
void rgb(int rgbA, int rgbB) {
int ra = (rgbA&0xf800)>>11;
int ga = (rgbA&0x7e0)>>5;
int ba = rgbA&0x1f;
int rb = (rgbB&0xf800)>>11;
int gb = (rgbB&0x7e0)>>5;
int bb = rgbB&0x1f;
for (int i=0; i<16; i++) {
int r = (ra*(15-i) + rb*i + 7)/15; // + 7 is there to apply rounding
int g = (ga*(15-i) + gb*i + 7)/15;
int b = (ba*(15-i) + bb*i + 7)/15;
int result = r<<11|g<<5|b;
printf("%04x\n", result);
}
}
答案 3 :(得分:0)
如果您想减少代码占用空间,可以执行以下操作:
const printStars = (n) => {
// Make sure we don't try to print zero stars
if (n > 0) {
// Fill an array with n stars
const arr = Array(n).fill('*').join(' ');
console.log(arr);
// After a second, reduce n by 1 and call
// the function again
setTimeout(() => printStars(--n), 1000);
}
}
printStars(10);
值得指出的是,IE / Opera不支持Array.fill
。
如果您需要支持,请在示例中使用for/loop
。在这里,我将该代码分离为自己的函数。
const getStars = (n) => {
let arr = [];
for (let i = 0; i < n; i++) {
arr.push('*');
}
return arr.join(' ');
}
const printStars = (n) => {
if (n > 0) {
console.log(getStars(n));
setTimeout(() => printStars(--n), 1000);
}
}
答案 4 :(得分:0)
您可以将setTimeout与偏移量一起使用。只需将所需的参数添加到日志功能中即可。
function log(offSet) {
setTimeout(() => {
const str = new Array(offSet + 1).join('*');
console.log(str);
}, 1000 * offSet);
}
for(let i = 1; i < 11; i ++) {
log(i);
}
答案 5 :(得分:0)
使用async / await可以直截了当。 delay
在指定的时间内执行代码。
async function minusTen(num) {
var arr = '';
for (var i = num; i > 0; i--) {
arr += '*';
}
var newArr = arr.split('');
for (var j = num; j > 0; j--) {
newArr.pop();
await delay(1000)
console.log(newArr.join(' '));
}
}
function delay(time) {
return new Promise((resolve) => setTimeout(resolve, time))
}
minusTen(10);