ES6 Promise 对象

es6 Promise 对象是异步编程的一种解决方案。(在javascript世界里,是单线程顺序执行的)
从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。

Promise 异步操作有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。除了异步操作的结果,任何其他操作都无法改变这个状态。
Promise 对象只有:从 pending 变为 fulfilled 和从 pending 变为 rejected 的状态改变。只要处于 fulfilled 和 rejected ,状态就不会再变了即 resolved(已定型)。

<script type="text/javascript">
    let promise = new Promise((resolve,reject)=>{
        console.log(‘promise初始化状态:pending‘)   // 同步执行
        setTimeout(()=>{
            console.log(‘开启定时器,模拟异步操作‘)
            //resolve(‘异步返回,执行成功‘) // promise状态为 fulfilled
            reject(‘异步返回,执行失败‘) // promise状态为 rejected
        },1000);
    });

    console.log(‘代码继续执行‘)

    //promise回调
    promise.then((data)=>{  // 第一个回调 成功resolve
        console.log(data)
    },(data)=>{   // 第二个回调 失败reject
        console.log(data)
    });

  
   //结果:
        //promise初始化状态:pending
        //代码继续执行
        //开启定时器,模拟异步操作     //异步返回,执行失败
</script>

ajax请求用上Promise,代码看起来更规整

以前写ajax请求 用原生的,很凌乱,就算用jquery ajax 回调方法那块也是多层嵌套,写业务逻辑也是很凌乱;

Promise 可以解决这种凌乱问题,让异步请求更加规整;维护方便;

tsconfig.json

{
  "ret": true,
  "data": {
    "studentList": [{
      "id": "0001",
      "name": "Jack"
    },{
      "id": "0002",
      "name": "Marry"
    },{
      "id": "0003",
      "name": "Sunndy"
    },{
      "id": "0004",
      "name": "Lini"
    }]
  }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
    let promise = new Promise((resolve,reject)=>{
        console.log(‘promise初始化状态:pending ‘); // 同步执行
        $.get(‘./tsconfig.json‘,{},function(result){
            console.log(‘ajax异步操作‘);
            if(result.ret){
                console.log(‘执行OK‘)
                resolve(result.data);
            }else{
                console.log(‘执行失败‘)
                reject(result.data)
            }
        },‘json‘);
    });

    promise
        .then((data)=>{   // 第一个回调  成功resolve
            console.log(‘resolve‘)
            console.log(data)
        },(data)=>{  // 第二个回调  成功reject
            console.log(‘reject‘)
            console.log(data.errorInfo)
        })

    console.log(‘代码继续执行‘);
</script>
</body>
</html>

原文地址:https://www.cnblogs.com/jnba/p/12221864.html

时间: 2024-08-01 03:02:34

ES6 Promise 对象的相关文章

ES6 Promise对象

Promise  ,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果. Promise 对象有以下两个特点. (1)对象的状态不受外界影响. Promise 对象代表一个异步操作,有三种状态: Pending (进行中). Resolved (已完成,又称 Fulfilled )和 Rejected (已失败).只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态. (2)一旦状态改变,就不会再变,任何时候都可以得到这个结果. Promis

ES6 Promise对象(七)

一.Promise介绍1.Promise简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果2.Promise可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数.此外,Promise对象提供统一的接口,使得控制异步操作更加容易 二.基本用法[使用时注意环境及异步操作相关包安装]在node环境中使用ajax时需要安装jsdom.jqury包配置常量: //创建window环境 const {JSDOM} = require('jsdom'); const

Promise 对象

es6 Promise 对象 定义参考 案例源码 戳这里 ps:每个案例都是基于上一个改造的 一.Promise 简介 Promise 是一个对象,从它可以获取异步操作的消息 案例1 新建项目 [demo] |-- src |-- index.html |-- index.js |-- webpack.config.js |-- package.json demo/package.json { "name": "webpack", "version&quo

ES6深入学习记录(二)promise对象相关

1.Promise的含义 Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件更合理和强大.ES6将其写进了语言标准,统一了用法,原生提供了promise对象. 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步的操作)的结果.从语法上说,Pormise是一个对象,从它可以获取异步操作的消息.Promise提供统一的API.各种异步操作都可以用同样的方法进行处理. Promise对象的两个特点: 1.对象的状态不受外界影响.Promis

ES6 - promise对象

Promise的设计初衷 我们使用ajax请求数据,得到数据后再对数据进行操作,可是有时候,对得到的数据进行操作的过程中,可能又要用到ajax请求,这时,我们的代码就变成了这样: $.ajax({ success:function(res1){ //...请求B开始,B依赖A返回的数据 $.ajax({ sucess:function(res2){ //...请求C开始,C依赖B返回的数据 $.ajax({ sucess:function(res3){ } }); } }); } }); 这种写

ES6的promise对象应该这样用

ES6修补了一位Js修真者诸多的遗憾. 曾几何时,我这个小白从js非阻塞特性的坑中爬出来,当我经历了一些回调丑陋的写法和优化的尝试之后,我深深觉得js对于多线程阻塞式的开发语言而言,可能有着其太明显的缺点,而又无法忽略的是也正因为这一点,node.js处理并行的能力被人看作优点,在我看来,这其实有着些讽刺的意味,就好像踢足球时有的人总夸你腿短,所以频率快下盘稳好控球...好在js从出生以来就有一种独特的特质,就是模仿,对,就是模仿,模仿别人的优点来补足自己,同时保持自己的长处. ES6就是通过P

es6中的promise对象

Promise是异步里面的一种解决方案,解决了回调嵌套的问题,es6将其进行了语言标准,同意了用法,提供了`promise`对象, promise对象有三种状态:pending(进行中) .Resolved(已经完成)和Rejected(已失败) ES6规定,Promise对象是一个构造函数,用来生成Promise实例. var promise=new Promise(function(resove,reject){ if (/* 异步操作成功 */){ resolve(value); } el

ES6学习笔记--promise对象

Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件更合理和更强大.它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象. Promise对象有以下两个特点. (1)对象的状态不受外界影响.Promise对象代表一个异步操作,有三种状态:Pending(进行中).Resolved(已完成,又称 Fulfilled)和Rejected(已失败).只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态.这也是Promi

es6 之 promise 对象

异步编程 传统方案:事件 + 回调函数 ES6 的新方案:Promise 对象 Promise 异步操作有 3 种状态 pending: 进行中 resolved: 已完成 rejected: 已失败 Promise 异步操作的状态变化仅限下面两种方式 pending –> resolved pending –> rejected 创建一个 Promise 实例: promise 构造函数接收一个函数作为参数,并且这个函数有两个参数,这两个参数是也是两个函数,不过这两个函数由 JavaScri