美文网首页
Promise对象的介绍与使用

Promise对象的介绍与使用

作者: 明灭_ | 来源:发表于2019-03-19 14:39 被阅读0次

1. Promise的含义

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

2. Promise的特点

  • 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)
    resolved一般代指fulfilled
  • 一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为resolved(已定型)

3. 基本用法

生成一个Promise实例:
const pro = new Promise(function(resolve, reject) {
  if (/*成功条件*/) {
      resolve(res);
  } else {   // 失败条件
      reject(err);
  }  
})
  • Promise对象接受一个函数作为参数,该函数的参数分别是resolvereject。它们是两个函数,由JS引擎提供,无需自己部署。
  • resolve函数的作用:将Promise对象的状态由未完成pending变为成功resolved,在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
  • reject函数的作用:将Promise对象的状态由未完成pending变为失败rejected,在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去;
实例生成后,用then方法指定resolved状态和rejected状态的回调函数:
pro.then((res) => {
    console.log(res);
},(err) => {
    console.log(err);
})
  • then方法可以接受两个回调函数作为参数。第一个回调函数是Promise对象的状态变为resolved时调用,第二个回调函数是Promise对象的状态变为rejected时调用。其中,第二个函数是可选的,不一定要提供。这两个函数都接受Promise对象传出的值作为参数。

4. 举个例子

const a = 3;
const promise = new Promise(function(resolve, reject) {
    console.log('new promise');
    if(a < 5) {
        resolve('a < 5');
    } else {
        reject('a > 5');
    }
})

promise.then((res) => {
    console.log(res);
},(err) => {
    console.log(err);
})

console.log('end')

结果:

new promise
end
a < 5

Tips:

  • Promsie新建后会立即执行,所以new promsie先输出
  • then方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以end最后输出。

相关文章

  • Promise对象的介绍与使用

    1. Promise的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理...

  • 手写 Promise

    一、Promise 是一个异步操作返回的对象,用来传递异步操作的消息。 Promise 介绍和使用详见: 认识并使...

  • 2019-06-05 手写Promise

    一、Promise 是一个异步操作返回的对象,用来传递异步操作的消息。 Promise 介绍和使用详见: 认识并使...

  • 手写Promise

    一、Promise 是一个异步操作返回的对象,用来传递异步操作的消息。 Promise 介绍和使用详见:MDN对P...

  • 《JS原理、方法与实践》- ES6新增对象(下篇)

    异步处理(Promise) ES2015中新增的Promise对象专门用于处理异步。Promise对象使用then...

  • Promise原理解析

    1、Promise 简介及使用 1.1、Promise 简介 Promise 对象是 CommonJS 工作组提出...

  • Promise使用详解

    Promise的使用 1.promise对象 Promise是个对象,在对象构造中传入回调,回调有两个参数一个re...

  • JavaScript----async、await

    async 函数 基本用法 语法返回Promise对象Promise对象await命令使用注意点 实例:按顺序完成...

  • ES6

    AJAX 异步网络请求 Promise 使用了Promise对象之后可以链式调用的方式组织代码 Promise.a...

  • 结合async/await使用Promise对象的api(all

    结合async/await使用Promise对象的api(all,race) Promise 和 async/aw...

网友评论

      本文标题:Promise对象的介绍与使用

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