美文网首页
16 Promise 对象

16 Promise 对象

作者: 爱熬夜的疯子 | 来源:发表于2020-01-16 14:58 被阅读0次
    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

    相关文章

      网友评论

          本文标题:16 Promise 对象

          本文链接:https://www.haomeiwen.com/subject/xcvfzctx.html