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'
});