jQueryのeach()関数は非ブロック化ですか?jQuery each()non-blocking?
以下の例では、「each in test」が最初にログに記録されることを期待していますが、「test out of each」が最初に記録されます。
これは、エラーを返す前に、ループが本文(ドキュメントもあります)要素まで実行されているためです。
私は、共通の親をラップするか、2つの要素(firstpとlastp)が兄弟である場合は、それらをラップします。
しかし、each()関数のパフォーマンスとノンブロッキングかどうかは、ほとんど気になります。
while(firstp[0] !== lastp[0]){
//If parents are siblings, this will do for wrapping.
var isS = false;
firstp.siblings().each(function(index, el){
console.log("test in each");
if(jQuery(el)[0] === lastp[0]){
isS = true;
return true;
}
});
console.log("test out of each");
if(isS === true){ break; }
firstp = firstp.parent();
lastp = lastp.parent();
}
EDIT:
申し訳ありませんが、みんな。これは誤った警告だった。ポールは正しい。私のHTMLには実際にfirstpにマッチした2つの要素がありました。私はこれを理解していないので、最初の人は兄弟を持っていないので、エラーが発生します。私はいつも第二の要素を見ていました。
しかし、私はその過程で何かを学んだので、答える時間をとってくれてありがとう。
あなたはまた、コンソールにログインし、「各テスト」を参照してくださいか? – ShankarSangoli
@Shankarはい、両方のテキストが記録されていますが、私が期待する順序ではありません。おそらく私は何かが明らかに欠けているでしょう。 –
@Senica:コンソールのログメッセージがテキストに明らかな関係を示さないときに、「注文」についてアサーションを行うことはできないと思います。メッセージは外部ループ内の異なる反復から印刷され、あなたは決して知りませんでした。 –