16 Promise 对象

promise的优点

最大的优点是:异步执行;
把执行代码和处理结果的代码清晰地分离

promise 函数接收2个函数参数,分别为:resolve(成功)和 reject(失败)

直接看代码:

function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, ms, 'done');
  });
}

timeout(100).then((value) => {
  console.log(value);
});

上面代码中,timeout方法返回一个Promise实例,表示一段时间以后才会发生的结果。过了指定的时间(ms参数)以后,Promise实例的状态变为resolved,就会触发then方法绑定的回调函数。

理解了上面,来看看下面这个,如果判断正确就应该没问题了

// 0.5秒后返回input*input的计算结果:
    function multiply(input) {
        return new Promise(function (resolve, reject) {
            console.log('calculating ' + input + ' x ' + input + '...');
            setTimeout(resolve, 2000, input * input);
        });
    }

    // 0.5秒后返回input+input的计算结果:
    function add(input) {
        return new Promise(function (resolve, reject) {
            console.log('calculating ' + input + ' + ' + input + '...');
            setTimeout(resolve, 5000, input + input);
        });
    }

    var p = new Promise(function (resolve, reject) {
        console.log('start new Promise...');
        resolve(123);
    });

    p.then(multiply)
        .then(add)
        .then(multiply)
        .then(add)
        .then(function (result) {
            console.log('Got value: ' + result);
        });

输出结果为:
start new Promise...
calculating 123 x 123...
calculating 15129 + 15129...
calculating 30258 x 30258...
calculating 915546564 + 915546564...
Got value: 1831093128

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:http://es6.ruanyifeng.com/#docs/promise Promise 的含义 ...
    AI云栈阅读 4,377评论 0 7
  • 1. Promise 的含义 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个...
    ROBIN2015阅读 3,490评论 0 0
  • Promise 是异步编程的一种解决方案,比传统的解决方案 —— 回调函数和事件 —— 更合理且强大 Promis...
    了凡和纤风阅读 3,496评论 0 1
  • 前言 本文旨在简单讲解一下javascript中的Promise对象的概念,特性与简单的使用方法。并在文末会附上一...
    _暮雨清秋_阅读 6,628评论 0 3
  • 自己用生菜,牛肉丸,龙须面,乱炖一碗,味道还出乎意料的美味!有时不按食谱,按心情随意过生活,也会有惊喜!
    只喝拿铁阅读 1,238评论 0 0

友情链接更多精彩内容