asynq

1.0.3 • Public • Published

asynqについて

asynqはES6 Generatorsを使用した非同期処理ライブラリです。 機能はほぼcoと同等となっていますが、 一部機能の違いがあり、また拡張が行われています。

coとの違いについて

  • ジェネレータ関数に引数を渡すことができます
  • yieldに非同期タスクを要求する際、Object型は使用できません(Arrayは対応しています)
  • yieldにPromise、Array、Function、GeneratorFunction、Generator以外を渡した場合にエラーとはなりません
  • yieldに上記以外を渡す場合用のコールバックを作成する機能があります

API

asynq(fn*|fn)

ジェネレータを使用した非同期処理を実行し結果を受け取るPromiseを返します。 最初の引数にはジェネレータ及びジェネレータ関数を使用することができます。 それ以外の場合はその値(関数の場合はその評価結果)を返すPromiseを返します。

以降の引数にはジェネレータ関数及び任意の関数用の引数を渡すことができます。

asynqの例

asynq(function*(){
  var result = Promise.resolve(123);  
  return result;
}).
then(function(data){
  //非同期処理の終了結果の受け取り
  console.log(data); //=> 123
}).
catch(function(err){
  //エラー処理
});

このコードを実行すると123が出力されます。

asynqの例(エラー)

asynq(function*(){
  var result = Promise.reject(new Error("foo"));  
  return result;
}).
then(function(data){
  //非同期処理の終了結果の受け取り
  console.log(data);
}).
catch(function(err){
  //エラー処理
  console.log(err.message);//=>foo
});

このコードを実行するとエラーハンドラ(catch)でfooが出力されます。

asynq.callbackを使用した例

asynq(function*(a, b, c){
  console.log("a");
  yield setTimeout(asynq.callback, a); //1秒待機
  console.log("b");
  yield setTimeout(asynq.callback, b); //2秒待機
  console.log("c");
  yield setTimeout(asynq.callback, c); //3秒待機
  console.log("done");
  
  return 123;
}, 1000, 2000, 3000).
then(function(data){
  //非同期処理の終了結果の受け取り
  console.log(data); //=> 123
}).
catch(function(err){
  //エラー処理
});

このコードを実行するとa,b,c,done,123と順に出力されます。

!書き途中

Package Sidebar

Install

npm i asynq

Weekly Downloads

1

Version

1.0.3

License

MIT

Last publish

Collaborators

  • kacchan6