0.0.31 • Published 8 years ago

avril.queue v0.0.31

Weekly downloads
6
License
MIT
Repository
github
Last release
8 years ago

#avril.queue avril.queue is an async flow control tool, it tries to ease the pain of callback.

It's pretty simple to use. Let's rock.

##install avril.queue

npm install avril.queue

for now avril.queue only support node env, I would try to make it support the browsers later.

/*
assume that we have a file "the/path/of/file.txt"
the file content is :
1
2
3
*/

func, $await , $each

var avQ = require('avril.queue');
var q = avQ();
     
/* return $AwaitData object */
var $fileContent = q.$await(fs.readFile, 'the/path/of/file.txt'
, function(err, fileContent){
  this.error(err);
  return fileContent;
});

/* conver the $awaitData' result , return a new $AwaitData object */
var $ids = $fileContent.conver(function($org){
  return $org.result().split('\n');
}); 

/*  return $AwaitData object which result is list of */
var $users = q.$each(db.User.findById, $ids, function(err, user){
  this.error(err);
  return user;
}); 

q.func(function(){
  console.log( $fileContent.result() )
  console.log( $users.realResult() );
});

###$$await & $$each

var avQ = require('avril.queue');
var q = avQ();

/* return $AwaitData object */
var $fileContent = q.$$await(fs.readFile, 'the/path/of/file.txt'); 

/* conver the $awaitData' result , return a new $AwaitData object */
var $ids = $fileContent.conver(function($org){
  return $org.result().split('\n');
}); 

/*  return $AwaitData object which result is list of */
var $users = q.$$each(db.User.findById, $ids); 

q.func(function(){
   console.log( $fileContent.result() )
   console.log( $users.realResult() );
});

###use $await, $each, with context

var avQ = require('avril.queue');
var q = avQ();
   
/* return $AwaitData object */
var $fileContent = q.$await(fs, fs.readFile, 'the/path/of/file.txt'
, function(err, fileContent){
  this.error(err);
  return fileContent;
});

/* conver the $awaitData' result , return a new $AwaitData object */
var $ids = $fileContent.conver(function($org){
  return $org.result().split('\n');
}); 

/*  return $AwaitData object which result is list of */
var $users = q.$each(db.User, db.User.findById, $ids, function(err, user){
	this.error(err);
	
	/* use this.$$await instead of q.$$await
	* use this.$$wait, the queue will wait the asynCall ready then go to next step
	* use q.$$wait only append current asynCall to the end of the queue, it's not what we want
	*/
	user.blogs = this.$$await(db.Blogs, db.Blogs.findByUserId, user.id);
    
    return user;
}); 

q.func(function(){
   console.log( $fileContent.result() )
   console.log( $users.realResult() );
});

###use q.$if($awaitData, trueFunc).$else(falseFunc)

var avQ = require('avril.queue');
var q = avQ();
var filePath = 'the/path/of/file.txt';
var $fileExisted = q.$await(fs.exists, filePath);
var $fileContent;
q.$if($fileExited, function(){
	/* use this.$$await instead of q.$$await
	* use this.$$wait, the queue will wait the asynCall ready then go to next step
	* use q.$$wait only append current asynCall to the end of the queue, it's not what we want
	*/
	$fileContent = this.$$await(fs.readFile, filePath); 
})
q.func(function(){
	if($fileContent){
		console.log($fileContent.result());
	}
});

var otherPath = 'the/path/of/otherFile.txt';

q.$if($fileContent, function(){
	$fileContent = this.$$await(fs.readFile, filePath);
}).$elseIf(q.$await(fs.exits, otherPath), function() {
	$fileContent = this.$$await(fs.readFile, otherPath);
});

q.func(function(){
	if($fileContent){
		console.log($fileContent.result());
	}
})
0.0.31

8 years ago

0.0.30

8 years ago

0.0.29

8 years ago

0.0.28

8 years ago

0.0.27

8 years ago

0.0.26

9 years ago

0.0.25

9 years ago

0.0.24

9 years ago

0.0.23

9 years ago

0.0.22

9 years ago

0.0.21

9 years ago

0.0.20

9 years ago

0.0.19

9 years ago

0.0.18

9 years ago

0.0.17

9 years ago

0.0.16

9 years ago

0.0.15

9 years ago

0.0.14

9 years ago

0.0.13

9 years ago

0.0.12

9 years ago

0.0.11

9 years ago

0.0.10

9 years ago

0.0.9

9 years ago

0.0.8

9 years ago

0.0.7

9 years ago

0.0.6

9 years ago

0.0.5

9 years ago

0.0.4

9 years ago

0.0.3

9 years ago

0.0.2

9 years ago

0.0.1

9 years ago