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

如何在用JavaScript或NodeJs编写的控制台应用程序中制作加载动画?,javascript,node.js,Javascript,Node.js,如何在用JavaScript或NodeJs编写的控制台应用程序中制作加载动画 示例动画或其他动画 1. -- 2. \ 3. | 4. / 5. -- 在浏览器控制台中不太可能。在Node.js中: var twirlTimer = (function() { var P = ["\\", "|", "/", "-"]; var x = 0; return setInterval(function() { process.stdout.write("\r" + P[x++]

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

示例动画或其他动画

1. --
2. \
3. |
4. /
5. --

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

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

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

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

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

setTimeout(() => {
  clearInterval(loader);
}, 5000);

哇,那
x&=3行是神秘的。我会写
x=x%P.length此处(使用模运算符而不是and运算符)。这样,如果您向P添加一个元素,那么代码也可以工作。在这种情况下,
x&=4
x&=P.length将不起作用。>。。。或x&=P.长度;不行为什么不行?我刚想到这一点well@MatthisKohli:对于某些自然的
k
,只有当
2^k
元素存在时,
&
东西才能工作,因为它依赖于。我这样写是因为我知道这里只能有4个元素;Joost是正确的,更一般地说,人们会使用
%