ES6-Promise承诺
1.扩展:ajax
1.1 代码如下
$.ajax({
    url:'地址',
    type:'get/post',
    data:{},
    dataType:'json/jsonp',
    success:function(res){
        //请求成功,接收返回值
    }
})
1.2 概念
- ajax不能跨域请求
- 两个网址:协议 主域号 端口号 完全相同时,这时两个网址完全相同,任意其一不同,即为跨域请求
 
- 解决跨域:
- 1.jsonp:在$.ajax({dataType:'jsonp'}),需要后台支持jsonp形式
- 2.cors:需要后台配合
- 3.后台设置允许所有或指定网址能直接访问
 
- 简写形式:
- $.get(url,data,function(res){})
- $.post(url,data,function(res){})
 
2.jQuery里的Promise
2.1 个人理解
- 同步:同时只能做一件事 代码简单
- 异步:操作之间没有关系 同时请求进行多个操作,小程序中可用于请求数据api接口,代码更复杂,用同步一样的方式,来书写异步代码
- Promise.all([$.ajax(),$.ajax()]).then(result=>{alert('对了')},err=>{alert('错了')})
2.2 代码如下
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>高版本jquery中Promise</title>
    <script src=" https://cdn.bootcss.com/jquery/3.5.0/jquery.js"></script>
    <script>
        // 高版本jquery中Promise自带封装函数
        Promise.all([
            $.ajax({
                url: 'arr.txt',
                dataType: 'json'
            })
        ]).then(function(arr) {
            alert('成功');
            let [res1, res2] = arr;
            alert(res1);
            alert(res2);
        }, function() {
            alert('失败');
        });
    </script>
</head>
<body>
</body>
</html>
3.Promise怎么用
3.1 利用函数赋值来返回请求数据
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Promise怎么用</title>
    <script src=" https://cdn.bootcss.com/jquery/3.5.0/jquery.js"></script>
    <script>
        let p = new Promise(function(resolve, reject) {
            // 异步代码
            // resolve——成功了
            // reject——失败了
            $.ajax({
                url: 'arr.txt',
                data: {},
                dataType: 'json',
                success: function(arr) {
                    //请求成功,接收返回值
                    resolve(arr);
                },
                error(err) {
                    reject(err);
                }
            });
        });
        // 原先js时
        p.then(function() {
            alert('成功');
        }, function() {
            alert('失败');
        });
    </script>
</head>
<body>
</body>
</html>
3.2 利用函数参数来进行promise操作返回请求数据
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Promise怎么用</title>
    <script src=" https://cdn.bootcss.com/jquery/3.5.0/jquery.js"></script>
    <script>
        // 封成函数,进行参数传递即可
        function createPromise(url) {
            return new Promise(function(resolve, reject) {
                // 异步代码
                // resolve——成功了
                // reject——失败了
                $.ajax({
                    url: 'arr.txt',
                    data: {},
                    dataType: 'json',
                    success: function(arr) {
                        //请求成功,接收返回值
                        resolve(arr);
                    },
                    error(err) {
                        reject(err);
                    }
                });
            });
        }
        // let p1 = new Promise(function(resolve, reject) {
        //     // 异步代码
        //     // resolve——成功了
        //     // reject——失败了
        //     $.ajax({
        //         url: 'arr.txt',
        //         data: {},
        //         dataType: 'json',
        //         success: function(arr) {
        //             //请求成功,接收返回值
        //             resolve(arr);
        //         },
        //         error(err) {
        //             reject(err);
        //         }
        //     });
        // });
        // let p2 = new Promise(function(resolve, reject) {
        //     // 异步代码
        //     // resolve——成功了
        //     // reject——失败了
        //     $.ajax({
        //         url: 'arr.txt',
        //         data: {},
        //         dataType: 'json',
        //         success: function(arr) {
        //             //请求成功,接收返回值
        //             resolve(arr);
        //         },
        //         error(err) {
        //             reject(err);
        //         }
        //     });
        // });
        // 现在js时
        Promise.all([
            // p1, p2
            // 简化操作
            createPromise('arr.txt')
        ]).then(function(arr) {
            alert('成功');
            let [res1, res2] = arr;
            alert(res1);
            alert(res2);
        }, function() {
            alert('失败');
        });
    </script>
</head>
<body>
</body>
</html>ES6-Promise承诺的更多相关文章
- ES6 Promise  异步操作
		最近越来越喜欢与大家进行资源分享了,并且及时的同步到自己的园子内,为什么呢? 一.小插曲(气氛搞起) 在上个月末,由于领导的高度重视(haha,这个高度是有多高呢,185就好了),走进了公司骨干员工的 ... 
- es6 promise 所见
		一.Promise是什么? Promise 是异步编程的一种解决方案: 从语法上讲,promise是一个对象,从它可以获取异步操作的消息:从本意上讲,它是承诺,承诺它过一段时间会给你一个结果. pro ... 
- 通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise
		Deferred 和 Promise ES6 和 jQuery 都有 Deffered 和 Promise,但是略有不同.不过它们的作用可以简单的用两句话来描述 Deffered 触发 resolve ... 
- ES6 Promise 接口
		构造函数 new Promise(function(resolve, reject){}); 构造函数接受一个函数(executor)作为参数,该函数在返回 Promise 实例之前被调用.函数的两个 ... 
- Es6 Promise 用法详解
		Promise是什么?? 打印出来看看 console.dir(Promise) 这么一看就明白了,Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方 ... 
- ES6 Promise 全面总结
		转载:点击查看原文 ES6 Promise对象 ES6中,新增了Promise对象,它主要用于处理异步回调代码,让代码不至于陷入回调嵌套的死路中. @-v-@ 1. Promise本质 Promise ... 
- 微信小程序Http高级封装 es6 promise
		公司突然要开放微信小程序,持续蒙蔽的我还不知道小程序是个什么玩意. 于是上网查了一下,就开始着手开发..... 首先开发客户端的东西,都有个共同点,那就是 数据请求! 看了下小程序的请求方式大概和a ... 
- 解析ES6 Promise
		ES6 Promise 概念之类的,大概读者都应该有所知道,接下来我们直入终点. 先让我们来看看什么是Promise吧,他是一个object,类,arry,function? 首先,学习它的时候应该讲 ... 
- jquery Promise和ES6 Promise的区别
		1. Deferred对象有resolve和reject方法,可以直接修改状态 jquery用Deferred实现了Promise规范,Deferred与ES6 Promise的最大区别是: Defe ... 
- ES6 Promise对象then方法链式调用
		then()方法的作用是Promise实例添加解决(fulfillment)和拒绝(rejection)状态的回调函数.then()方法会返回一个新的Promise实例,所以then()方法后面可以继 ... 
随机推荐
- F. Cards and Joy
			F. Cards and Joy 题目大意: 给你n个人,每一个人恰好选k张牌. 第一行是 n 和 k 第二行有n*k个数,代表有n*k张牌,每张牌上的数字 第三行有n个数,代表第i个人喜欢的数字 第 ... 
- SpringBoot:整合Druid、MyBatis
			目录 简介 JDBC 导入依赖 连接数据库 CRUD操作 自定义数据源 DruidDataSource Druid 简介 配置数据源 配置 Druid 数据源监控 配置 Druid web 监控 fi ... 
- EChart将timeline图标设置为加号
			一 要实现的效果 二 官方文档 看一下官方文档上,替换symbol的描述: timeline.symbol string [ default: 'emptyCircle' ] timeline标记的图 ... 
- ActiveMQ 持久订阅者,执行结果与初衷相违背,验证离线订阅者无效,问题解决
			导读 最新在接触ActiveMQ,里面有个持久订阅者模块,功能是怎么样也演示不出来效果.配置参数比较简单(配置没几个参数),消费者第一次运行时,需要指定ClientID(此时Broker已经记录离线订 ... 
- Linux文件操作命令并举例说明其作用
			ls ,常用于查看当前文件下有工作中需要的文件 cd, 常用于进行切换文件的位置 vim,常用于编辑软件系统相关的配置文件 ps –ef|grep jdk,常用语显示跟jdk有关的进程 |:表示 ... 
- xml(3)
			xml的解析方式:dom解析和sax解析 DOM解析 使用jaxp进行增删改查 1.创建DocumentBuilderFactory工厂 2.通过DocumentBuilderFactory工厂创建D ... 
- [hdu5399 Too Simple]YY
			题意:m个{1,2...n}→{1,2...,n}的函数,有些已知有些未知,求对任意i∈{1,2,...,n},f1(f2(...(fm(i)))=i的方案总数,为了方便简记为F(i) 思路:如果存在 ... 
- js理论-函数中的Arguments对象
			详情参考:https://github.com/mqyqingfeng/Blog/issues/14 如果: arguments和实参的关系,以及arguments的属性 附上代码和注解 functi ... 
- Redis数据类型简介(十分钟快速学习Redis)
			如何在ubuntu18.04上安装和保护redis 如何连接到Redis数据库 如何管理Redis数据库和Keys 如何在Redis中管理副本和客户端 如何在Redis中管理字符串 如何在Redis中 ... 
- 黑马程序员_毕向东_Java基础视频教程——switch语句练习(随笔)
			switch(练习) /* if和 switch 语句很像. 具体什么场景下使用什么语句呢? 如果判断的具体数值不多且符合byte.short.int.char.String类型,虽然两个语句都可以使 ... 
