Namespace: async

h5. async

Methods

(static) deferred() → {Deferred}

登録された共通のエラー処理(h5.settings.commonFailHandler)を実行できるDeferredオブジェクトを返します。
Deferredに notify() / notifyWith() / progress() メソッドがない場合は、追加したオブジェクトを返します。
Returns:
Deferredオブジェクト
Type
Deferred
Source:

(static) isPromise(object) → {Boolean}

オブジェクトがPromiseオブジェクトであるかどうかを返します。
オブジェクトがDeferredオブジェクトの場合、falseが返ります。
Parameters:
Name Type Description
object Object オブジェクト
Returns:
オブジェクトがPromiseオブジェクトであるかどうか
Type
Boolean
Source:

(static) loop(array, callback, suspendOnTimesopt) → {Promise}

指定された回数ごとにループを抜けブラウザに制御を戻すユーティリティメソッドです。
また、callbackで渡された関数が{Promise}を返した場合、その{Promise}が終了するまで次のループの実行を待機します。
Parameters:
Name Type Attributes Default Description
array Array.<Any> 配列
callback function コールバック関数。
コールバックには引数として現在のインデックス、現在の値、ループコントローラが渡されます。
callback(index, value, loopControl)
loopControlは以下の3つのメソッドを持っています。
  • pause - 処理の途中でポーズをかけます。
  • resume - ポーズを解除し処理を再開します。
  • stop - 処理を中断します。1度stopで中断すると再開することはできません。
suspendOnTimes Number <optional>
20 何回ごとにループを抜けるか。デフォルトは20回です。
Returns:
Promiseオブジェクト
Type
Promise
Source:

(static) when(var_args) → {Promise}

引数に指定した1つ以上のPromiseオブジェクトに基づいて、コールバックメソッドを実行します。

引数に指定されたPromiseオブジェクトの挙動によって、以下のような処理を実行します。

  • 引数に指定されたPromiseオブジェクトのうち、1つでもreject()が実行されると、failコールバックを実行します。
  • 引数に指定されたすべてのPromiseオブジェクトの全てでresolve()が実行されると、doneコールバックを実行します。
  • 引数に指定されたPromiseオブジェクトでnotify()が実行されると、progressコールバックを実行します。
本メソッドはjQuery.when()と同様の機能を持っており、同じように使うことができます。
ただし、以下のような違いがあります。

jQuery.when()と相違点

  • failコールバックが未指定の場合、共通のエラー処理(commonFailHandler)を実行します。(※ whenに渡したpromiseについてのcommonFailHandlerは動作しなくなります。)
  • jQuery1.6.xを使用している場合、jQuery.when()では使用できないnotify/progressの機能を使用することができます。ただし、この機能を使用するにはh5.async.deferred()によって生成されたDeferredのPromiseオブジェクトを引数に指定する必要があります。
  • 引数の指定方法について、jQuery.when()は可変長のみなのに対し、本メソッドは可変長またはPromiseオブジェクトを持つ配列で指定することができます。

引数の指定方法

配列または可変長で、複数のPromiseオブジェクトを渡すことができます。
例)
  • h5.async.when(p1, p2, p3);
  • h5.async.when([p1, p2, p3]);
Promiseオブジェクト以外を渡した時は無視されます。
また、可変長と配列の組み合わせで指定することはできません。
  • h5.async.when(p1, [p2, p3], p4);
のようなコードを書いた時、2番目の引数は「配列」であり「Promise」ではないので無視され、p1とp4のみ待ちます。

また、配列が入れ子になっていても、再帰的に評価はしません。
  • h5.async.when([pi, [p2, p3], p4])
と書いても、先の例と同様p1とp4のみ待ちます。
Parameters:
Name Type Description
var_args Promise Promiseオブジェクト(可変長または配列で複数のPromiseを指定する)
Returns:
Promiseオブジェクト
Type
Promise
Source: