• 异步和同步

    • 异步,操作之间没有关系,同时执行多个操作, 代码复杂

    • 同步,同时只能做一件事,代码简单

  • Promise 对象

    • 用同步的方式来书写异步代码

    • Promise 让异步操作写起来,像在写同步操作的流程,不必一层层地嵌套回调函数

    • 改善了可读性,对于多层嵌套的回调函数很方便

    • 充当异步操作与回调函数之间的中介,使得异步操作具备同步操作的接口

  • Promise 也是一个构造函数

    • 接受一个回调函数f1作为参数,f1里面是异步操作的代码

    • 返回的p1就是一个 Promise 实例

    • 所有异步任务都返回一个 Promise 实例

    • Promise 实例有一个then方法,用来指定下一步的回调函数

      let p1 = new Promise(function(resolve, reject){
      // 异步代码 resolve 成功了 reject 失败了
      // $.ajax() 执行异步 AJAX 请求
      $.ajax({
      url: '10-arr.txt', //规定发送请求的 URL。默认是当前页面。
      dataType:'json',//预期的服务器响应的数据类型。
      success(arr){
      resolve(arr);
      },
      error(err){
      reject(err);
      }
      })
      }); p1.then(function(arr){
      console.log('成功了'+arr);
      },function(err){
      console.log('失败了'+err);
      });
      let p1 = new Promise(function(resolve, reject){
      $.ajax({
      url: '10-arr.txt',
      dataType:'json',
      success(arr){
      resolve(arr);
      },
      error(err){
      reject(err);
      }
      })
      });
      let p2 = new Promise(function(resolve, reject){
      $.ajax({
      url: '10-arr1.txt',
      dataType:'json',
      success(arr){
      resolve(arr);
      },
      error(err){
      reject(err);
      }
      })
      });
      Promise.all([
      p1,p2
      ]).then(function(arr){
      let [res1, res2] = arr;
      alert('全成功了');
      alert(res1);
      alert(res2);
      },function(){
      alert('至少有一个失败了');
      });
      // 失败!!!!!!!!!!!!!
      function createPromise(url){
      return new Promise(function(resolve, reject){
      $.ajax({
      url,
      dataType:'json',
      success(arr){
      resolve(arr);
      },
      error(err){
      reject(err);
      }
      })
      });
      }
      Promise.all([
      createPromise('10-arr.txt'),
      createPromise('10-arr1.txt')
      ]).then(function(arr){
      let [res1, res2] = arr;
      alert('全成功了');
      alert(res1);
      alert(res2);
      },function(){
      alert('至少有一个失败了');
      });
      // 失败!!!!!!!!!!!!!
       Promise.all([
      $.ajax({url:'10-arr.txt',dataType:'json'}),
      $.ajax({url:'10-arr1.txt',dataType:'json'})
      ]).then(function(results){
      let [arr,json] = results;
      alert('成功了');
      console.log(arr.json);
      },function(){
      alert('失败了');
      });

        

ES6——Promise的更多相关文章

  1. 通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise

    Deferred 和 Promise ES6 和 jQuery 都有 Deffered 和 Promise,但是略有不同.不过它们的作用可以简单的用两句话来描述 Deffered 触发 resolve ...

  2. ES6 Promise 接口

    构造函数 new Promise(function(resolve, reject){}); 构造函数接受一个函数(executor)作为参数,该函数在返回 Promise 实例之前被调用.函数的两个 ...

  3. Es6 Promise 用法详解

     Promise是什么??    打印出来看看  console.dir(Promise) 这么一看就明白了,Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方 ...

  4. ES6 Promise 全面总结

    转载:点击查看原文 ES6 Promise对象 ES6中,新增了Promise对象,它主要用于处理异步回调代码,让代码不至于陷入回调嵌套的死路中. @-v-@ 1. Promise本质 Promise ...

  5. ES6 Promise 异步操作

    最近越来越喜欢与大家进行资源分享了,并且及时的同步到自己的园子内,为什么呢? 一.小插曲(气氛搞起) 在上个月末,由于领导的高度重视(haha,这个高度是有多高呢,185就好了),走进了公司骨干员工的 ...

  6. 微信小程序Http高级封装 es6 promise

    公司突然要开放微信小程序,持续蒙蔽的我还不知道小程序是个什么玩意. 于是上网查了一下,就开始着手开发..... 首先开发客户端的东西,都有个共同点,那就是  数据请求! 看了下小程序的请求方式大概和a ...

  7. 解析ES6 Promise

    ES6 Promise 概念之类的,大概读者都应该有所知道,接下来我们直入终点. 先让我们来看看什么是Promise吧,他是一个object,类,arry,function? 首先,学习它的时候应该讲 ...

  8. jquery Promise和ES6 Promise的区别

    1. Deferred对象有resolve和reject方法,可以直接修改状态 jquery用Deferred实现了Promise规范,Deferred与ES6 Promise的最大区别是: Defe ...

  9. ES6 Promise对象then方法链式调用

    then()方法的作用是Promise实例添加解决(fulfillment)和拒绝(rejection)状态的回调函数.then()方法会返回一个新的Promise实例,所以then()方法后面可以继 ...

  10. ES6 Promise(2)

    Promise的兴起,是因为异步方法调用中,往往会出现回调函数一环扣一环的情况.这种情况导致了回调金字塔的出现.不仅代码写起来费劲不美观,而且问题复杂的时候,阅读代码的人也难以理解. db.save( ...

随机推荐

  1. vue父组件更新,子组件也更新的方法

    1.父组件 使用 Math.ramdom() 2.子组件获取 然后监听这个ramdom变化,处理子组件的更新

  2. SQL Server性能调优--优化建议(一)

    序言 当数据量小的时候,SQL优化或许无关紧要,但是当数据量达到一定量级之后,性能优化将变得至关重要,甚至决定系统成败. 定位慢查询 查询编译以来cpu耗时总量最多的前50条 --查询编译以来 cpu ...

  3. Spring——简介

    学习网站: [1]http://spring.io/ [2]http://projects.spring.io/spring-framework/ Spring是为解决企业应用开发的复杂性而创建的,是 ...

  4. [LOJ2288][THUWC2017]大葱的神力:搜索+背包DP+费用流+随机化

    分析 测试点1.2:搜索+剪枝. 测试点3:只有一个抽屉,直接01背包. 测试点4.5:每个物品体积相同,说明每个抽屉能放下的物品个数固定,建图跑费用流. 测试点6:每个物品体积相近,经过验证发现每个 ...

  5. WebServices 实现跨应用程序进行通信和跨平台进行通信

    SOA ,即Service Oriented Architecture ,中文一般理解为面向服务的架构, 既然说是一种架构的话,所以一般认为 SOA 是包含了运行环境,编程模型, 架构风格和相关方法论 ...

  6. P3373线段树2

    #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ll sum[N<<],lazy1[N ...

  7. linux安装 redis

    通过源码编译安装 1.下载源码包 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩redis tar -zxf redi ...

  8. VB6 Webbowser控件与JS交互,无边框和屏蔽右键菜单

    1. 屏蔽右键菜单  在菜单中单击"工程"->"引用",在列表中找到"Microsoft HTML Object Library"打上 ...

  9. Centos 7下安装nginx,使用yum install nginx,提示没有可用的软件包

    Centos 7下安装nginx,使用yum install nginx,提示没有可用的软件包. 18 (flaskApi) [root@67 flaskDemo]# yum -y install n ...

  10. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_05 List集合_1_List集合_介绍&常用方法

    有序的,还包含索引,允许有重复的值 . add   打印出来的不是地址,说明重写了toString的方法 remove方法 返回的是被移除的元素 set方法 get 索引越界异常 几种越界的异常