2017-04-08 5 views
0

JavaScript(Node)では、いくつかの式を順序どおりに実行する必要があります。これは、すべてが即座に、混在した順序で一緒に実行されるため、機能しません。JavaScriptで遅延式と順序式を評価することはできません

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

約束を見て、特別にbluebirdを見てください。彼らはあなたが何をしているかを正確に行う遅延方法を持っています。

const Promise = require('bluebird'); 

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

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)); 
関連する問題