promise解决回调地狱

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了promise解决回调地狱相关的知识,希望对你有一定的参考价值。

参考技术A  <script src="./jquery-1.12.4.js"></script>

    <script>

        // axios('..')

        // .then(res=>

        //     /* 返回 地球 月球 */

        //     /* 。。。。 */

        // )

        // .then(res=>

        //     /* 返回 美洲 亚洲 */

        // )

        // .then(res=>

        //     /* 返回中国 美国 */

        // )

        /* console.log(Promise); */

        /**

         * 功能:用来解决回调地狱

         * @params Function

         * */

        new Promise(

            /**

             * @params resolve Function 请求已经完成的时候调用

             * @params reject Function 请求发送失败的时候调用

             * */

            function (resolve,reject)

                $.ajax(

                    url:"xingqiu.txt",

                    success:function(res)

                        /* 返回 地球 月球 */

                        resolve(res)

                    ,

                    error:function(err)

                        reject(err)

                   

                )

           

        )

        /* .then里面只有一个回调函数是用来接收请求成功后得到的数据 */

        // .then(data=>

        //     console.log('then1:',data);

        //     /* 如果需要传给下一个then 需要return你要传的数据 */

        //     return '地球';

        // )

        // /* .catch是用来捕获失败的时候得到的错误信息的 */

        // .catch(error=>

        //     console.log('catch1:',error);

        // )

        /* .then里面有两个回调函数,第一个表示请求成功,

        第二个表示请求失败的时候调用 */

        // .then(data=>

        //     console.log('then1:',data);

        //     return '地球';

        // ,error=>

        //     console.log('catch1:',error);

        // )

        .then(data=>

            console.log('then2:',data.substring(0,3) );

            return new Promise(resolve=>

                $.ajax(

                    url:'./zhou.txt?name='+data,

                    success:function(res)

                        // console.log('第二个请求拿到的洲数据',res);

                        resolve('亚洲')

                    ,

                    error:function(err)

                        // console.log(err);

                        // console.log('提示:接口请求失败');

                   

                )

            )

        )

        .then(data=>

            console.log('then3:',data);

            return new Promise(resolve=>

                $.ajax(

                    url:'./guo.txt?name='+data,

                    success:function(res)

                        console.log('第三个请求拿到最终的数据',res);

                    ,

                    error:function(err)

                        // console.log(err);

                        // console.log('提示:接口请求失败');

                   

                )

            )

        )

    </script>

以上是关于promise解决回调地狱的主要内容,如果未能解决你的问题,请参考以下文章

async + promise 解决回调地狱

基于PROMISE解决回调地狱问题

js-promise以及asyncawait

面试题系列---什么是Promise,解决什么问题?Promise.all解决了什么问题?实现原理?回调地狱?

JavaScript 使用Async 和 Promise 完美解决回调地狱

promise-基础