ajax/ 回调函数(回调地狱)

AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新。
ps: 需要引入jQuery库

1. ajax 写法:

$.ajax({
            url: 'http://192.168.XX.XXX:9999/path1', //接口地址
            method: 'get',  //请求方式
            data:{
                username: 'wang',
                password: 'abcd'
            },
            dataType: 'json',
            timeout: 5000,  //超时事件
            success: function(res){
                console.log('请求成功',res)
                
                $("#box").html(res.title)
                $("#box2").html(res.code)

            },
            error: function(err){
                console.log('请求出错',err)
            }
        })

2. 回调函数:

function fun1(x,callback){
            var res = x
            var num = x*x
            var apple = 5-x
            callback(res)
            callback(num)
            callback(apple)
        }
        fun1(3,function(res){
            console.log('res',res+res)
        })

3. 回调地狱:

函数作为参数,进行层层的嵌套,被称之为回调地狱。因为层层的回调,所以很难直接的观察到正确的执行结果。

function fetch(fetchUrl,callback){
            $.ajax({
                url: fetchUrl,
                method: 'get',
                timeout: 2000,
                success: function(res){
                    callback(res)
                },
                error: function(err){

                }
            })
        }

        fetch('http://192.168.XX.XX:9999/path1',function(data){
            console.log('1111',data);
            fetch('http://192.168.XX.XX:9999/path2',function(data){
                console.log('222',data)
                fetch('http://192.168.XX.XX:9999/path3',function(data){
                    console.log('333',data)
                    fetch('http://192.168.XX.XX:9999/path4',function(data){
                        console.log('444',data)
                        fetch('http://192.168.XX.XX:9999/path5',function(data){
                            console.log('555',data)
                            fetch('http://192.168.XX.XX:9999/path6',function(data){
                            console.log('666',data)
                            })
                    })
                    })
                })
            })
        })
  • 解决方法:

promise
await/async (语法糖)

  • promise的三个状态:

在这里插入图片描述


function getPromise(){
  return new Promise((resolve, reject) => {
    
    if( //成功 ) {
       resolve(// 原本成功的回调)
    } else {
       reject(// 原本失败的回调)
    }

  })
}
  • promise 的两个方法 then、catch:

在这里插入图片描述

getPromise().then(function (res) {
   console.log('res', res);
}, function err () {
   console.log('err', err)
}).catch( error => {
   console.log('error', error)
})
  • Async/await:

在这里插入图片描述

async function fun () {

		await /** 异步操作 */
	
}


异步操作的结果是其本身,直接赋值即可
const result = await /** 异步操作 */

Async/await 其实是 Generator 的语法糖

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值