2016-10-04 30 views
-1

私は迷路ジェネレータを作成しています。ドロー機能が正常に動作し、それがすることになっている迷路を描くが、undefinedをcreatemaze返しながら、私の問題は、ある関数が未定義であっても関数が返されません

function generate() { 
    //generate one iteration of a maze 
} 
function createmaze() { 
    interval = window.setInterval(function() { 
     //create the maze by calling generate repeatedly, and some other stuff (which works!) 
     if(stop condition) { 
      draw(maze); 
      return(maze); 
      window.clearInterval(interval); 
     } 
    }, 0); 
} 

alert(createmaze()); 

function draw() { 
    //draws maze 
} 


私のコードは次のようなものです。私はそれを描画しないいくつかのコードのために迷路が必要であることを除いて、それは問題ではないだろう。
編集:私は0としたsetInterval間違っを使用していたけど、何とか物事はまだここでの問題は、あなたの間隔は4ミリ秒で終わるということです

+1

@charlietfl - 彼は間隔が値を返すことを期待しています。 –

+2

あなたは創作物で何かを返さない。 0msごとに実行されるタイマーを作成しています。匿名の関数がキャッチされないということを返す。 –

+0

なぜ間隔が「0」ですか? – tymeJV

答えて

1

を働いていた、それはブラウザが遅延タスクを実行することができるようになりますよう、最速であります。

また、間隔から値を戻すことは取得されず、結果としてcreatemaze()関数自体には戻り値がありません。それはあなたがそれから来る未定義を見る理由です。

インターバル結果の非同期性をキャッチするには、約束を使用するか、コールバック構造を使用する必要があります。

+0

これは4msではなく10msです – Bergi

関連する問題