Pot.js と PotLite.js で利用可能。
処理の同期と非同期を切り替え設定します。
Deferred チェインの処理の、同期と非同期を 切り替えます。
デフォルトは非同期です。
同期にするには false を渡します。
非同期で実行するには true を渡します。
同期的に実行するには、
var d = new Pot.Deferred();
とコンストラクタから開始した場合のみ適応できます。
なぜなら Pot.Deferred.begin などの関数は、
関数内で非同期として new Pot.Deferred()
と生成しているからです。
最初の実行時に非同期だった場合、同期にしたとしても意味はありません。
または、同期にする場合
コンストラクタの引数にオプションで、
var syncDederred = new Pot.Deferred({ async : false });
と設定することもできます。
詳しくは、Pot.Deferred コンストラクタ を参照ください。
実行時の Pot.Deferred インスタンスが返ります。
引数に何も与えずに実行した場合、現在の 同期/非同期設定の値が返ります。
var value = null; var d = new Pot.Deferred(); // 同期に設定 d.async(false).then(function() { return 'sync'; }).then(function(res) { return res + 'hron'; }).then(function(res) { return res + 'ous'; }).then(function(res) { value = res; }).begin(); debug(value); // 'synchronous'
非同期で実行:
var value = null; var d = new Pot.Deferred(); // 非同期に設定 (デフォルトは true なので本来必要ありません) d.async(true).then(function() { return 'async'; }).then(function(res) { return res + 'hron'; }).then(function(res) { return res + 'ous'; }).then(function(res) { value = res; }).begin(); // 非同期のためすぐには取得できない debug(value); // null // 少し待ってから取得 Pot.Deferred.wait(1).then(function() { debug(value); // 'asynchronous' });