だから、私は脳のお誘いを考えていました。なぜなら何らかの理由で大きなオブジェクトをノードjで繰り返しなければならなかったのですが、その間にイベントループをブロックしたくないのでしょうか? 、私はそれが散らかっているため、他の理由があると確信しているもののjavascriptでnon-blocking forループを書く最もクリーンな方法は何ですか?
var forin = function(obj,callback){
var keys = Object.keys(obj),
index = 0,
interval = setInterval(function(){
if(index < keys.length){
callback(keys[index],obj[keys[index]],obj);
} else {
clearInterval(interval);
}
index ++;
},0);
}
:ここ
は、オフ・トップ・オブ・私の頭の例ですが、私はそれがはるかにきれいにすることができます確信していますsetInterval 0は実際には0msごとに実行されないので、これは通常のforループよりも遅く実行されますが、はるかに高速なprocess.nextTickでループを作成する方法がわかりません。
私のテストでは、ネイティブforループ(hasOwnProperty()チェック、同じ情報を記録する)とは異なり、この例では7ミリ秒かかることがわかりました。
node.jsを使用してこの同じコードを書く最もクリーンで最速の方法は何ですか?
申し訳ありません質問を誤読 – kennebec
なぜですか?これは虐待です。これをしないでください – Raynos
@レイノス - なぜこの乱用ですか?ネイティブのforループを持つ巨大なオブジェクトを反復処理すると、ループが実行される限りスレッドはブロックされます。それは私に悪用のように聞こえる、私はすべてのユーザーにサービスするために25ミリ秒かかる場合、それは膨大なスケーリングの問題に変換することができます。 – Jesse