如何在用JavaScript或NodeJs编写的控制台应用程序中制作加载动画?

*_*лов 12 javascript node.js

如何在用JavaScript或NodeJs编写的控制台应用程序中制作加载动画?

示例动画或其他动画.

1. --
2. \
3. |
4. /
5. --
Run Code Online (Sandbox Code Playgroud)

Ama*_*dan 31

浏览器控制台不太可能.在Node.js中:

var twirlTimer = (function() {
  var P = ["\\", "|", "/", "-"];
  var x = 0;
  return setInterval(function() {
    process.stdout.write("\r" + P[x++]);
    x &= 3;
  }, 250);
})();
Run Code Online (Sandbox Code Playgroud)

  • 你可以用`clearInterval(twirlTimer)`来阻止它. (3认同)
  • 哇,那条x&= 3;行是神秘的。我会在那里写“ x = x%P.length;”(使用取模运算符而不是and运算符)。这样,如果将元素添加到P,代码也将起作用。在这种情况下,`x&= 4;`或`x&= P.length;`将不起作用。 (2认同)

小智 7

您也可以在浏览器控制台中执行此操作:

var loading = (function() {
  var h = ['|', '/', '-', '\\'];
  var i = 0;

  return setInterval(() => {
    i = (i > 3) ? 0 : i;
    console.clear();
    console.log(h[i]);
    i++;
  }, 300);
})();

// clearInterval(loading) to stop it.
Run Code Online (Sandbox Code Playgroud)


小智 5

setInterval() 方法每隔 250 毫秒以指定的时间间隔(以毫秒为单位)调用函数或计算表达式,p 数组中的值将打印在控制台上。setTimeout() 方法在指定的毫秒数后调用函数或计算表达式。setInterval 在这里用作循环。使用 clearInterval,循环在 5000 毫秒后使用 setTimeout 中断。

const P = ['\\', '|', '/', '-'];
let x = 0;
const loader = setInterval(() => {
  process.stdout.write(`\r${P[x++]}`);
  x %= P.length;
}, 250);

setTimeout(() => {
  clearInterval(loader);
}, 5000);
Run Code Online (Sandbox Code Playgroud)