首页 > Promise then 方法返回值问题。

Promise then 方法返回值问题。

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

【热门文章】
【热门文章】