javascript - Promise then 方法返回值问题。
天蓬老师
天蓬老师 2017-04-11 11:51:09
[JavaScript讨论组]
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 做一个层封装?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号