function double(value) {
return value * 2;
}
function increment(value) {
return new Promise(function(resolve, reject){
resolve(value+9);
})
}
function output(value) {
console.log(value);// => (1 + 9) * 2
}
var promise = Promise.resolve(1);
promise
.then(increment)
.then(double)
.then(output)
.catch(function(error){
console.error(error);
});
定义: Promise then 返回一个新的 promise。
其实上 double方法 返回一个 int类型,increment 返回一个Promise对象
double 返回类型与定义不符合,这其中Promise做了什么?
是 return new Promise(function(resolve,reject){resolve(value*2)})?
那Promise 如何区别return int,string,Promise 做一个层封装?
看看A+Promise
this.then = function (onFulfilled, onRejected) {
var self = this;
return new Promise(function (resolve, reject) {
return self.done(function (result) {
if (typeof onFulfilled === 'function') {
try {
return resolve(onFulfilled(result));
} catch (ex) {
return reject(ex);
}
} else {
return resolve(result);
}
}, function (error) {
if (typeof onRejected === 'function') {
try {
return resolve(onRejected(error));
} catch (ex) {
return reject(ex);
}
} else {
return reject(error);
}
});
});
}
then
方法的实现里,确实是返回了一个新的Promise
,你说的double
,其实是then
的第一个参数onFulfilled