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