ES6-Promise承诺

时间:2020-05-22
本文章向大家介绍ES6-Promise承诺,主要包括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>

原文地址:https://www.cnblogs.com/dongxuelove/p/12935484.html