Pot.Deferred.prototype.async

{Pot.Deferred|Boolean} Pot.Deferred.prototype.async ({Boolean} sync)

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