• 异步和同步

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

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

  • 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. 如何解决DEDE织梦友情链接字数限制与链接个数限制的问题?

    如何解决DEDE织梦友情链接字数限制与链接个数限制的问题!织梦网站非常适合网站搭建以及网站优化,而友情链接是做优化必不可少的模块,我们经常搭建织梦网站发现织梦系统的友情链接模板有时候会限制字数不显示以 ...

  2. 软件工程 in MSRA 黄金点游戏-第一次结对编程

    简单介绍 第一次结对编程,邹欣老师选择了一个博弈游戏作为题目.博弈论是一门非常有趣的学科.之前竞赛时接触的博弈论大部分都是存在均衡点/必胜策略的.像这次这种多人参与,没有完美策略,你方唱罢我登台的游戏 ...

  3. HDU1232 畅通工程(并查集)

    #include<iostream> using namespace std; ]; int findx(int x) { while(num[x]!=x)x=num[x]; return ...

  4. sh_01_hello

    sh_01_hello print("hello python") print("你好世界")

  5. 滑动报 Unable to preventDefault inside passive event listener due to target being treated as passive 的解决方法

    google浏览器滑动出现以下问题: 解决办法如下:在html元素下添加样式 touch-action: none; html{ touch-action:none; }

  6. React Native商城项目实战16 - 购物中心详细页

    逻辑分析: 首页(Home)加载的购物中心组件(ShopCenter),传递url数据: ShopCenter里根据url加载购物中心详细页组件(ShopCenterDetail), ShopCent ...

  7. EDM实例之15个节日邮件标题分享

    调查显示,去年节假日,47%的消费者打开节日邮件是因为邮件主题内容吸引.为了让企业获得更多的交易,帮助企业在繁忙的节假日内不畏竞争,全国知名的EDM邮件服务商Focussend历经多年行业的实践分析, ...

  8. requests模块(请求接口)

    下面分别是get,post,入参json,添加cookie,添加header,上传/下载文件 的接口请求举例: import requests   #导入模块 #1.发get请求 url = 'htt ...

  9. delphi 语法 点滴总结clientdataset

    clientdataset   记录数 是从1 开始的. self.ClientDataSet5.RecNo   记录数 可以 读写 赋值. 随意改动. 哈哈 很方便.

  10. nvm-windows编译源码 go遇到的问题

    异常: Microsoft Windows [Version 10.0.17134.1006] (c) Microsoft Corporation. All rights reserved. C:\U ...