Pot.js と PotLite.js で利用可能。
引数 object のすべての要素について
関数 callback によって実行した結果が 真 (true) となる場合、true を返します。
処理は、Array.prototype.every と同じように実行されます。
引数 object には、対象の配列またはオブジェクトを指定します。
引数 callback は、実行する関数を指定します。
引数 context が指定されると、callback 関数の this が context にとって代わります。
コールバック関数の引数は以下のようになります。
function (value, key, object) { this === context } value : {*} object の各値 key : {String|Number|*} object の各キー object : {Object|Array} object 自身
処理は 同期処理、非同期処理、それぞれ異なります。
callback 関数の中で StopIteration (Pot.StopIteration) を throw することでループを止められます。
Pot.Deferred.every.slow()
のようにして速度の指定ができます。
非同期では、ほとんどの環境で速度指定が可能ですが、
同期での速度指定は一部の環境 (XUL 上など) のみになります。
指定できる名前は以下の表を参照ください。
デフォルトの速度は normal です。
値 / メソッド名 | 速度 |
limp | 最も遅い |
doze | 遅い |
slow | 遅め |
normal | 通常 |
fast | 速め |
rapid | 速い |
ninja | 最も速い |
object のすべての要素について、関数 callback によって実行した結果が 真 (true) となる場合、true を返します。
それ以外は false を返します。
Pot.every で同期処理の例:
// 配列に対しての例 function isBigEnough(value, index, array) { return (value >= 10); } var arr1 = [12, 5, 8, 130, 44]; var result1 = Pot.every(arr1, isBigEnough); debug(result1); // false var arr2 = [12, 54, 18, 130, 44]; var result2 = Pot.every(arr2, isBigEnough); debug(result2); // true
// オブジェクトに対しての例 function isBigEnough(value, key, object) { return (value >= 10); } var obj1 = {a: 1, b: 10, c: 50, d: 107}; var result1 = Pot.every(obj1, isBigEnough); debug(result1); // false var obj2 = {a: 122, b: 10, c: 50, d: 107}; var result2 = Pot.every(obj2, isBigEnough); debug(result2); // true
Pot.Deferred.every で非同期処理の例:
// 配列に対しての例 function isBigEnough(value, index, array) { return (value >= 10); } var arr1 = [12, 5, 8, 130, 44]; Pot.Deferred.every(arr1, isBigEnough).then(function(result) { debug(result); // false }); var arr2 = [12, 54, 18, 130, 44]; Pot.Deferred.every(arr2, isBigEnough).then(function(result) { debug(result); // true });
// オブジェクトに対しての例 function isBigEnough(value, key, object) { return (value >= 10); } var obj1 = {a: 1, b: 10, c: 50, d: 107}; Pot.Deferred.every(obj1, isBigEnough).then(function(result) { debug(result); // false }); var obj2 = {a: 122, b: 10, c: 50, d: 107}; Pot.Deferred.every(obj2, isBigEnough).then(function(result) { debug(result); // true });
Pot.Deferred.prototype.every で非同期処理の例:
// 配列に対しての例 function isBigEnough(value, index, array) { return (value >= 10); } var d = new Pot.Deferred(); d.then(function() { return [12, 5, 8, 130, 44]; }).every(isBigEnough).then(function(result) { debug(result); // false }).then(function() { return [12, 54, 18, 130, 44]; }).every(isBigEnough).then(function(result) { debug(result); // true }).begin();
// オブジェクトに対しての例 function isBigEnough(value, key, object) { return (value >= 10); } Pot.Deferred.begin(function() { return {a: 1, b: 10, c: 50, d: 107}; }).every(isBigEnough).then(function(result) { debug(result); // false }).then(function() { return {a: 122, b: 10, c: 50, d: 107}; }).every(isBigEnough).then(function(result) { debug(result); // true });