Pot.js - Pot Iterator functions

Pot Iterator functions

このセクションでは Pot.js / PotLite.js で実装している各イテレータやイテレート関数について解説します。

イテレート関数を非同期で実行する場合、 例えば Pot.forEach が Pot.Deferred.forEach になり、 Pot.Deferred のインスタンスを返します。
Pot オブジェクトから直接参照できる Pot.forEachPot.map などは同期で実行されます。
基本的に、同期と非同期の差はなく 引数や処理は同じです。
また、Pot.Deferred のチェイン上で使用する場合、 第一引数が object などの コールバック関数 (callback) でないものは、 第一引数 (object) がシフトし、 コールバック関数 (callback) が第一引数となり、 もともと使われるはずの第一引数 (object) は Deferred コールバックチェインの実行結果にとって代わります。
それ以外は引数の扱いに関して同じです。

同期で実行:

var result = '';
Pot.forEach({a: 1, b: 2, c: 3}, function(value, key) {
    result += key + value;
});
Pot.debug(result); // 'a1b2c3'

非同期で実行:

var result = '';
Pot.Deferred.forEach({a: 1, b: 2, c: 3}, function(value, key) {
    result += key + value;
}).then(function() {
    Pot.debug(result); // 'a1b2c3'
});

非同期で Pot.Deferred チェイン上で実行:

var result = '';
var d = new Pot.Deferred();

d.then(function() {
    return {a: 1, b: 2, c: 3};
}).forEach(function(value, key) {
    result += key + value;
}).then(function() {
    Pot.debug(result); // 'a1b2c3'
}).begin();

Pot.globalize() が適応されている場合、例えば Pot.forEach が、たんに forEach になり、 Pot.Deferred.forEach は Deferred.forEach として実行できます。

このリファレンスのサンプルコードの多くは、 便宜上 Pot.globalize() が適応されたと仮定して記述しています。
例えば、Pot.forEach として定義されている関数を forEach(...) と表現している場合があります。 これは、Pot.globalize() がされていない場合 Pot.forEach(...) として呼び出せます。 他の関数も同様です。
Pot.globalize() が適応済みの場合、定義名のままで呼び出せます。

また、サンプルコードでは コンソールに出力するデバッグ用関数 Pot.debug() を多用しています。
Pot.debug() を、たんに debug() と表している場合もあります。
Pot.debug については このセクションで扱っているので詳しくはメニューから参照ください。

このリファレンスは Pot.js, PotLite.js の関数を事細かく解説しているわけではないので、 足りない情報があるかもしれません。
より詳しくは ソースコードから自動生成された JSDoc ドキュメント (Pot.js) or JSDoc ドキュメント (PotLite.js) または直接ソースコードを参照ください。