在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);

因为它应该停止评估下一个表达式。我的程序流将转到其他地方,该功能将无缘无故地运行。
我需要一些同步函数来延迟运行并按照我的书面顺序运行。我无法实现它。
我不知道如果搞砸了设计。我只是想点击机器人在线游戏。但这是不同的。这个网络机器人应该像人一样,随机延迟点击一下。
答案 0 :(得分:0)
看看Promises,特别是bluebird。他们有一种延迟方法,可以完全按照你所做的那样。
const Promise = require('bluebird');
Promise.resolve(1)
.delay(500)
.then((n) => {
console.log(n);
return ++n;
})
.delay(1000)
.then(n => console.log(n));
答案 1 :(得分:0)
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));