我无法在 javascript 中评估延迟和有序表达式



在Javascript(Node(中,我应该按顺序运行多个表达式,并在某些延迟中运行。这是行不通的,因为它们都立即以混合顺序一起运行;

var i = 0;
function run(){
  console.log(i++);
};
setTimeout(run, 500);
setTimeout(run, 500);
setTimeout(run, 500);
setTimeout(run, 500);

这不好:

var i = 0;
function run(){
  console.log(i++);
};
setTimeout(run, 500);
setTimeout(run, 1000);
setTimeout(run, 1500);
setTimeout(run, 1600);

因为它应该停止计算下一个表达式。我的程序流将转到其他地方,函数将无缘无故地运行。

我需要一些同步函数来延迟运行并按照我的书面顺序运行。我无法实现它。

我不知道我是否搞砸了设计。我只想制作一个在线游戏点击机器人。但这是不同的。这个网络机器人应该像人类一样行动,并以随机延迟点击事物。

看看承诺,特别是进入蓝鸟。他们有一种延迟方法,可以完全按照您的要求进行操作。

const Promise = require('bluebird');
Promise.resolve(1)
    .delay(500)
    .then((n) => {
        console.log(n);
        return ++n;
    })
    .delay(1000)
    .then(n => console.log(n));

jsfiddle

var i = 0;
function run (delay) {
  return function () {
    return new Promise(function (resolve, reject) {
      setTimeout(function () {
        console.log(i++);
        resolve();
      }, delay);
    });
  };
}
Promise.resolve()
  .then(run(500))
  .then(run(1000))
  .then(run(1500));

最新更新