JavaScriptの同期処理と非同期処理についてです。

以下のようなソースの中に2秒ほどスリープする処理を入れたいのですが、うまく行きません。

if(hoge){
  if(!huga){
    // ここに2秒スリープ処理
    location.href = hoge.html;
  }
  if(hogeType == "a" && hugaType == "b"){
    location.href = huga.html;
  }
}
hogefunc(hoge, huga);

調べると、setTimeout関数やjQuery.Deferredというものが使えそうだったのですが、location.href = hoge.html;は走らないのですが、if(hogeType == "a" && hugaType == "b"){ これより下の処理が走ってしまい困っています。
どうすればスリープさせることができるのでしょうか?