首页 > 技术文章 > 二.什么是Promise

p1967914901 2020-07-09 00:04 原文

1.理解

抽象表达:
Promise 是JS 中进行异步编程的新的解决方案

具体表达:

  • 从语法上来说:Promise 是一个构造函数

  • 从功能上来说:promise对象用来封装一个异步操作并可以获取其结果

2.promise 的状态改变

  1. pending 变为 resolved
  2. pending 变为 rejected
    说明: 只有这2种,且一个promise对象只能改变一次
    无论变为成功还是失败,都会有一个结果数据
    成功的结果数据一般称为vlaue,失败的结果数据一般称为reason

3.promise的基本流程

1

4.promise的基本使用

//语法
//  new Promise( function(resolve, reject) {...} /* executor */  );
//参数
/*
executor是带有 resolve 和 reject 两个参数的函数 。Promise构造函数执行时立即调用executor 函数,
 resolve 和 reject 两个函数作为参数传递给executor(executor 函数在Promise构造函数返回所建promise实例对象前被调用)。
 resolve 和 reject 函数被调用时,分别将promise的状态改为fulfilled(完成)或rejected(失败)。
 executor 内部通常会执行一些异步操作,一旦异步操作执行完毕(可能成功/失败),要么调用resolve函数来将promise状态改成fulfilled,
 要么调用reject 函数将promise的状态改为rejected。如果在executor函数中抛出一个错误,
 那么该promise 状态为rejected。executor函数的返回值被忽略。
*/
// 1. 创建一个新的promise对象
const p = new Promise((resolve, reject) => {// 执行器函数
    // 2.执行异步操作任务
    setTimeout(()=> {
    	const time = Date.now()// 如果当前时间是偶数就代表成功,否则代表失败
        // 3.1. 如果成功了,调用resolve(value)
        if(time %2 == e){
            resolve('成功的数据,time=' + time)
        ) else {
            //3.2.如果失败了,调用reject(reason)
            reject('失败的数据,time='+ time)
        ),1000);
     });
p.then(
    value => { //接收得到成功的value数据 onResolved
    	console.log('成功的回调', value)
    },
    reason => {// 接收得到失败的reason数据 onRejected
    	console.log('失败的回调', reason)
    }
 )

推荐阅读