es5异步

es5异步

1

let ajax = function(callback) {
    console.log("开始执行ajax函数");
    setTimeout(function(){
        callback&&callback.call()
    },1000);
};
ajax(function(){
    console.log("执行ajax函数的回调函数");
})

1.1 改进

let ajax = function(callback) {
    console.log("开始执行ajax函数");
    setTimeout(function(){
        callback&&callback.call()
    },1000);
};
let f1=function(){
    console.log("执行ajax函数的回调函数");
}
ajax(f1)

1.2 改进

let ajax = function(sql,done) {
    console.log("开始执行ajax函数");
    setTimeout(function(){
        done(sql)
    },1000);
};
let abc=function(sql){
    console.log(sql);
}
let sql='select * from china'
ajax(sql,abc) 

1.3 改进

let ajax = function(result,sql,done) {
    console.log("开始执行ajax函数");
    setTimeout(function(){
        done(result,sql)
    },1000);
};
let abc=function(result,sql){
    result=100
    console.log(sql);
}
let sql='select * from china'
let result
ajax(result,sql,abc) 

2 es5异步转同步

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>异步变同步</title>
</head>
<body>
    <script type="text/javascript">
        var a = 0;
        window.onload = function(){
            var a = function(){
                setTimeout(function(){
                    a = 100;
                    if(get){
                        get(a)
                    }
                },5000)
            }()

            if(a){
                document.write(a)
            }else if(!a){
                var get = function(b){
                    a=b;
                    document.write(a)
                }
            }
        }
        
    </script>
</body>
</html>

3

let ajax = function (sql, done) {
    setTimeout(function () {
        done()
    }, 1000);
    console.log("开始执行ajax函数");
};

let sql = 'dbsqlu'
ajax(sql, function () {
    console.log(sql + "执行完毕");
})

es6异步

let sendok = false
let sendtoairport = () => {
    return new Promise((resolve, reject) => {
        if (sendok) {
            setTimeout(() => {
                resolve('send ok')
            }, 1000);
        }
        else{
            setTimeout(() => {
                reject('send not ok')
            }, 1000);
        }

    })
}

let p = sendtoairport()
p.then((value) => { console.log(value) }, (reason) => { console.log(reason) })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值