promise的简单用法、使用、例子、另外处理方法

简介: promise的简单用法、使用、例子、另外处理方法

promise的简单用法

 <html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 </head>
 <body>
     <script>
         //网络请求:aaa -> 自己处理返回的数据(10行代码),然后拼接aaa和111变成aaa111
         //网络请求:aaa111 -> 自己处理返回的数据(10行代码),然后拼接aaa111和222变aaa111222
         //网络请求:aaa111222 -> 自己处理返回的数据
         
        // new Promise((resolve)=>{
        //     setTimeout(()=>{
        //         //成功时调用
        //         resolve("aaa");
        //     },1000)
        // }).then(res=>{
        //     console.log(res,"第一层的10行处理代码");
            
        //     //对结果进行第一次处理
        //     return new Promise((resolve)=>{
        //         resolve(res+"111");
        //     })
        // }).then(res=>{
        //     console.log(res,"第二层的10行处理代码");
            
        //     //对结果进行第二次处理
        //     return new Promise((resolve)=>{
        //         resolve(res+"222");
        //     })
        // }).then(res=>{
        //     console.log(res,"第三层的10行处理代码");
        // })


        //new Promise(resolve => resolve(结果))简写      Promise.resolve(res+"111");
        // new Promise((resolve)=>{
        //     setTimeout(()=>{
        //         //成功时调用
        //         resolve("aaa");
        //         //失败时调用
        //     },1000)
        // }).then(res=>{
        //     console.log(res,"第一层的10行处理代码");
            
        //     //对结果进行第一次处理
        //     return Promise.resolve(res+"111");

        //     // return Promise.reject("错误信息");

        // }).then(res=>{
        //     console.log(res,"第二层的10行处理代码");
            
        //     //对结果进行第二次处理
        //     return Promise.resolve(res+"222");
        // }).then(res=>{
        //     console.log(res,"第三层的10行处理代码");
        // })//.catch(err=>{
        // //     console.log(err);
        // // })


        //省略掉Promise.resolve
        // new Promise((resolve,reject)=>{
        //     setTimeout(()=>{
        //         //成功时调用
        //         resolve("aaa");
        //         //失败时调用
        //         // reject("错误信息");
        //     },1000)
        // }).then(res=>{
        //     console.log(res,"第一层的10行处理代码");
            
        //     //对结果进行第一次处理
        //     // return res+"111";

        //     throw res;

        // }).then(res=>{
        //     console.log(res,"第二层的10行处理代码");
            
        //     //对结果进行第二次处理
        //     return res+"222";
        // }).then(res=>{
        //     console.log(res,"第三层的10行处理代码");
        // }).catch(err=>{
        //     console.log(err);
        // })
     </script>
 </body>
 </html>

promise的使用

 <html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 </head>
 <body>
     <script>
        //  使用setTimeout
        //  setTimeout(()=>{
        //     console.log("hellobug");
        //  },1000)
        
        //下面这执行顺序看起来很乱
        // setTimeout(()=>{
        //     console.log("hellobug1");
        //     console.log("hellobug1");
        //     console.log("hellobug1");
        //     console.log("hellobug1");
        //     console.log("hellobug1");
        //     console.log("hellobug1");
        //     setTimeout(()=>{
        //         console.log("hellobug2");
        //         console.log("hellobug2");
        //         console.log("hellobug2");
        //         console.log("hellobug2");
        //         console.log("hellobug2");
        //         console.log("hellobug2");
        //         setTimeout(()=>{
        //             console.log("hellobug3");
        //             console.log("hellobug3");
        //             console.log("hellobug3");
        //             console.log("hellobug3");
        //             console.log("hellobug3");
        //             console.log("hellobug3");
        //         },1000)
        //     console.log("hellobug1");
        //     console.log("hellobug1");
        //     },1000)
        // console.log("hellobug2");
        // console.log("hellobug2");
        // },1000)


        // Promise 的参数中,resolve和reject本身就是函数
        //链式编程
        new Promise((resolve,reject)=>{
            setTimeout(()=>{
                resolve();
            },1000)
        }).then(()=>{
            //第一次网络请求的代码
            console.log("hellobug1");
            console.log("hellobug1");
            console.log("hellobug1");
            console.log("hellobug1");
            console.log("hellobug1");
            console.log("hellobug1");
            new Promise((resolve,reject)=>{
                setTimeout(()=>{
                resolve();
            },1000)
            })
        }).then(()=>{
            //第二次网络请求的代码
            console.log("hellobug2");
            console.log("hellobug2");
            console.log("hellobug2");
            console.log("hellobug2");
            console.log("hellobug2");
            console.log("hellobug2");
            new Promise((resolve,reject)=>{
                setTimeout(()=>{
                resolve();
            },1000)
            })
        }).then(()=>{
            //第三次网络请求的代码
            console.log("hellobug3");
            console.log("hellobug3");
            console.log("hellobug3");
            console.log("hellobug3");
            console.log("hellobug3");
            console.log("hellobug3");
        })
        
        //什么情况下会用到promise      一般情况下是有异步操作时,使用promise对这个异步情况进行封装
        new Promise((resolve,reject)=>{
            setTimeout(()=>{
                //成功时调用
                // resolve("请求成功");
                //失败时调用
                reject("请求失败");
            },1000)
        }).then((data)=>{
            console.log(data);
        }).catch((err)=>{
            console.log(err);
        })
     </script>
 </body>
 </html>

promise的例子

 <html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 </head>
 <body>
     <script>
         //如果要等两个请求都返回了数据才做操作
         Promise.all([
             new Promise((resolve,reject)=>{
                // resolve("resolve1");
                resolve({name: "峰锅", age: 20});
             }),
             new Promise((resolve,reject)=>{
                // resolve("resolve2");
                resolve({name: "峰爷", age: 21});
            })
            ]).then(res=>{
                //res是两个resolve返回的参数组成的数组
                console.log(res);//res[0]   [{name: "峰锅", age: 20},{name: "峰爷", age: 21}]
                console.log(res[0]);//res[0]   {name: "峰锅", age: 20}
                console.log(res[1]);//res[1]   {name: "峰爷", age: 21}
            })
     </script>
 </body>
 </html>

promise的另外处理方法

 <!DOCTYPE html>
 <html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 </head>
 <body>
     <script>
        new Promise((resolve,reject)=>{
            setTimeout(()=>{
                //成功时调用
                // resolve("请求成功");
                //失败时调用
                reject("请求失败");
            },1000)
        }).then((data)=>{
            console.log(data);
        },(err)=>{
            console.log(err);
        })
     </script>
 </body>
 </html>
目录
相关文章
|
4月前
|
缓存 前端开发 JavaScript
整会promise这8个高级用法,再被问倒来喷我
整会promise这8个高级用法,再被问倒来喷我
整会promise这8个高级用法,再被问倒来喷我
|
7月前
|
前端开发
Promise的用法&原理&手写实现-2
Promise的用法&原理&手写实现-2
21 1
|
5月前
|
前端开发 JavaScript
使用promise解决异步请求的用法
使用promise解决异步请求的用法
34 0
|
7月前
|
前端开发 JavaScript API
Promise的用法&原理&手写实现-1
Promise的用法&原理&手写实现-1
23 0
|
9月前
|
前端开发
promise ,async/await的基础用法
promise ,async/await的基础用法
|
前端开发 JavaScript API
【温故知新】5 个 Promise 要避免的常见用法~
本瓜一直觉得 Promise 就是咱 JS 人的浪漫,没错,Promise 天天见,但或许越熟悉越陌生,我们在一直用的过程中会形成一些定式,这导致难免会漏掉一些定式以外的要点;
|
前端开发 JavaScript
js Promise与async/await用法详解
js Promise与async/await用法详解
|
前端开发
promise 的基本用法
promise 的基本用法
|
JSON 前端开发 JavaScript
vue+axios+promise实际开发用法
vue+axios+promise实际开发用法
201 0
vue+axios+promise实际开发用法
|
前端开发 JavaScript API
JS异步执行,Promise用法
JS异步执行,Promise用法
130 0
JS异步执行,Promise用法