Defer 异步流程控制
用法
var promise = function(){
var deferred = new Defer;
setTimeout(function(){
var rand = Math.random() > .5;
if(rand){
deferred.resolve('ok');
}else{
deferred.reject('error');
}
}, 0);
return deferred.promise;
}
promise.then(function(data){
console.log(data);
},function(err){
console.log(err);
});
API
otherwise(fn)
otherwise 等于 then 函数只传reject
var promise = Defer.promise(function(resolve, reject){
setTimeout(function(){
Math.random() > .5 ? resolve('ok') : reject('error');
}, 0);
});
promise.then(function(data){
console.log(data);
}).otherwise(function(err){
console.log(err);
})
promise(fn)
静态方法promise接受一个函数作为参数,该函数得到两个参数分别是resolve,reject两个函数,用于改变promise的状态
var promise = Defer.promise(function(resolve, reject){
setTimeout(function(){
Math.random() > .5 ? resolve('ok') : reject('error');
}, 0);
});
promise.then(function(data){
console.log(data);
},function(err){
console.log(err);
})
resolve(data), reject(reason)
这两个方法用于把现有对象转为promise对象
var promise = Defer.resolve('ok');
promise.then(function(data){
console.log(data);
})
all(promises)
多个promise对象包成一个promise对象
Defer.all([promise1(), promise2()]).then(function(data){
console.log(data); // [data1, data2]
}, function(err){
console.log(err);
})