Q.fcall
把普通函数return 转化为 promise
1 2 3 4 5 6 7 8 9 10 11
| function read(text,callback){ return text }
Q.fcall(read,1,function(text){
}).then(function(res){ console.log(res) }).catch(function(err){ alert(err) })
|
Q.denodeify
把符合node回调规则的函数转化为promise
1 2 3 4 5 6 7 8 9 10 11
| function read(a,callback){ callback(null,a) }
var Qread = Q.denodeify(read); Qread(1).then(function(res){ console.log(res) }).catch(function(err){ alert(err) })
|
Q.defer 方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| function read(text){ var defferObj = Q.defer(); if(text === 1){ defferObj.resolve('this argument is 1') }else{ defferObj.reject('this argument is not 1') } return defferObj.promise; } read(1).then(function(res){ console.log(res) }).catch(function(err){ alert(err) })
|
Q.promise
1 2 3 4 5 6 7 8 9 10
| Q.Promise(function(resolve, reject){ setTimeout(function(){ resolve(1) },1000) }).then(function(text){ console.log(text) }).catch(function(err){ alert(err) })
|
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| function qFoo(text){ return Q.promise(function read(resolve,reject){ resolve(text*2) }) }
function qBar(text){ return Q.promise(function read(resolve,reject){ resolve(text*text) }) }
qFoo(2) .then(function(res){ return qBar(res) }) .then(function(res){ console.log(res) })
|
Q.all
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Q.all([ Q.promise(function(resolve, reject) { setTimeout(function() { resolve(); }, 1000) }), Q.promise(function(resolve, reject) { setTimeout(function() { resolve(); }, 2000) }) ]).then(function(res) { console.log('都完成了') }).catch(function(err){ alert(err) })
|
Q.allSettled
all成功后返回数组
Q.()
包装别函数提供的promise类库