0.1.1 • Published 8 years ago

y-promise v0.1.1

Weekly downloads
11
License
-
Repository
github
Last release
8 years ago

#YPromise

基于 Common JS Promises/A 建议的js异步编程库,提供一种Promise机制来管理js中的异步交互。

##使用

##API 如果你以前使用过window8开发中的WinJS.promise对象,你可以快速上手。

###YPro(Function) or YPromise(Function) 构造器 初始化一个promise对象,其中YPro提供一个对YPromise的简洁访问

init方法中可传入三个参数,后面两个为可选

  • completeDispatch 初始化代码中操作完成后需要调用这个函数传递结果
  • errorDispatch 当发生错误时需要调用这方法传递错误
  • progressDispatch 如果异步操作需要支持进度条,初始化代码应该定期调用这个功能,并传递一个进度中间值

你需要使用这个返回一个promise对象来包裹你的异步函数

###.then

指定promise完成后执行的函数,如果promise未完成则进行错误处理,以及处理进度变化通知

参数:

  • onComplete promise成功后将会执行此方法,参数来自构造函数中的 completeDispatch 传递
  • onError promise发生错误将会调用此方法
  • onProgress 如果promise函数中有来自 progressDispatch 调用将会触发此方法

返回: 该方法将会返回一个 YPromise 对象

###.done (待完善) 提供和then一样的作用,此方法不会传递错误值,将会把异常直接抛出

###YPromise.join

合并多个promise,当所有Promise完成后将会执行then方法,返回对应位置promise的返回,若promise返回参数多于一个,将会以数组的形式传递返回。

参数: 一个或多个YPromsie对象

返回:该方法将会返回一个YPromise对象

###YPromise.queue 执行一个返回Ypromise的队列方法

该方法传入两个参数,第二个参数为可选

  • array 一个待执行包含返回promise对象的function数组
  • isOrder 默认false,若为true,将会按顺序执行array队列中的方法,且设置为true后,将会把单个方法错误信息放到onComplete回调中

返回,该方法返回一个 Ypromise 对象

javascript var args = []; for(var i=0;i<50; i++){ args.push(i); }

var taskList = args.map(function(arg){ return function(){ return new YPro(function(comp,err,prog){ setTimeout(function(){ console.log('in function',arg); comp('callback '+arg); },300); }); }; });

YPro.queue(taskList) .then(function(){ cosole.log(arguments); return YPro.queue(taskList,true); }) .then(function(){ console.log(arguments); });

###`YPromise.any`
用法类似`YPromise.join`,但不需要等待所有proimise完成,一旦其中任意一个promise完成将会立即传递这个promise的返回值。
<pre>
YPro.any(promise1,promise2,…).then(onComplete);
</pre>

返回,该方法返回一个`YPromise`对象

<pre>
var PromiseAny = YPro.join(fn1(),fn2())
			.then(function(data){
				console.log(data);
			});
</pre>

###`YPromise.as`
此方法将会把同步方法以Promise的方式调用,以解决特殊时候需求

<pre>
YPro.as(Function).then(onComplete);
</pre>

返回:该方法将会返回一个`YPromise`对象

<pre>
function fn5(){
	return 'function 5 done';
}
var PromiseAs = YPro.as(fn5())
			.then(function(data){
				console.log(data);
			});

</pre>

###`YPromise.cancel`
调用该方法将会取消promise链的向下执行
<pre>
YPromsise.cancel();
</pre>

***
更多用法请参考/example例子