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 做一个层封装?

阅读 23k
1 个回答

看看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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏