含义:

(1)Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。
(2)所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
(3)Promise对象代表了未来要发生的事情,用来传递一步操作的消息。
(4)对象的状态不受外界的影响

使用:

  • resolve:成功的回调;
  • reject: 失败的回调;
  • catch: 捕获promise内部错误;
  • 回调函数我把函数传给你,你调用的时候同时能给我传过来参数;
  • 如果没有传 reject 函数 你在promise 调用reject 那么 他就会报错 解决 第一 传函数(回调函数) catch;
  • async 关键字 加在 函数前 结合 await 可以 默认获取 resolve返回值;
  • await 相当于 一个断点 也就是 当我这行代码 执行完 才可以执行 下面的代码;

示例:

  1. let promise = new Promise((resolve, reject) => {
  2. resolve("哈哈哈!")
  3. })
  4. promise.then((res => {
  5. console.log(res);
  6. }), (rej => {
  7. console.log(rej);
  8. }))

优缺点:

优点:

  • 首先promise主要解决回调地狱(异步处理);
  • 有了 Promise 对象,就可以将异步操作以同步操作的流程表达出来;
  • 避免了层层嵌套的回调函数;

缺点:

  • 无法中途取消,一旦建立它就立即执行;
  • pending: 初始状态,不是成功或失败状态。 ```javascript 示例:let promise = new Promise((resolve,reject) =>{ setTimeout(() => { num = 2 resolve(num) }, 2000); }) promise.then((res)=>{ console.log(res) }) let str = ‘ya’ let myFirstPromise = new Promise((resolve, reject) => { 当异步代码执行成功时,我们才会调用resolve(…), 当异步代码失败时就会调用reject(…) 在本例中,我们使用setTimeout(…)来模拟异步代码,实际编码时可能是XHR请求或是 HTML5的一些API方法. setTimeout( ()=> { resolve(“成功!”); //代码正常执行! }, 5050); });

myFirstPromise.then((successMessage) => { successMessage的值是上面调用resolve(…)方法传入的值. successMessage参数不一定非要是字符串类型,这里只是举个例子 document.write(“Yay! “ + successMessage); })

let str = ‘ya’ let myFirstPromise = new Promise((resolve, reject) => { resolve(str + ‘成功’); }); myFirstPromise.then((successMessage) => { document.write(“Yay! “ + successMessage); },(rej) =>{ console.log(rej) }) ```