前端的Promise是干啥的?

如题所述

Promise是异步编程的一种解决方案,可以替代传统的解决方案--回调函数和事件。ES6统一了用法,并原生提供了Promise对象。作为对象,Promise有以下两个特点:

(1)对象的状态不受外界影响。

(2)一旦状态改变了就不会在变,也就是说任何时候Promise都只有一种状态。

可以通过Promise的构造函数创建Promise对象。

var promise = new Promise(function(resolve,reject)setTimeout(function(){                              
  console.log("hello world");},2000);
});

Promise构造函数接收一个函数作为参数,该函数的两个参数是resolve,reject,它们由JavaScript引擎提供。其中resolve函数的作用是当Promise对象转移到成功,调用resolve并将操作结果作为其参数传递出去;reject函数的作用是单Promise对象的状态变为失败时,将操作报出的错误作为其参数传递出去。如下面的代码:

   function greet(){    var promise = new Promise(function(resolve,reject){        var greet = "hello  world";
        resolve(greet);
    });    return promise;
    }
    greet().then(v=>{    console.log(v);//*
    })

上面的*行的输出结果就是greet的值,也就是resolve()传递出来的参数。

注意:创建一个Promise对象会立即执行里面的代码,所以为了更好的控制代码的运行时刻,可以将其包含在一个函数中,并将这个Promise作为函数的返回值。

Promise的then方法

  promise的then方法带有以下三个参数:成功回调,失败回调,前进回调,一般情况下只需要实现第一个,后面是可选的。Promise中最为重要的是状态,通过then的状态传递可以实现回调函数链式操作的实现。先执行以下代码:

function greet(){var promise = new Promise(function(resolve,reject){    var greet = "hello  world";
    resolve(greet);
});return promise;
}var p = greet().then(v=>{console.log(v);
})console.log(p);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-17
转异步为同步的作用
123