js异步变同步(利用await、async关键字)

使用 异步方法会将逻辑代码嵌套到成功回调内,维护不太方便,尤其是需要多次回调嵌套时
例子:使用ajax 异步请求后台,然后成功后再请求某个后台(只是举例 现在基本都用fetch/axios 了)

/* 第一次请求 */
$.ajax({
    url: url,
    data: data,
    success: function(){
            //逻辑代码
            /* 第二次请求 */
            $.ajax({
                url: url,
                data: data,
                success: function(){
                        //逻辑代码
                        //#code...
            }});
}});

简单封装下

async function ajax(obj){
    return Primise((resolve, reject) => {
        $.ajax({
                url: obj.url,
                data: obj.data,
                success: function(res){
                        resolve(res)
                },
                error:function(err){
                        reject(err)
                }
            });
    })
}
/*调用方式*/
let result =  await ajax({url:url,data:data});
//逻辑代码 
#code

uniapp的例子 小程序端没有h5端的confirm,多个showModal不会阻塞 多个showModal 后面的不会执行 这个时候可以用到async阻塞程序 很方便
/*
* @return bool 用户选择的结果
* 异步等待结果
*/
async function asyncConfirm(content = '') {
    return new Promise((resolve, reject) => {
        uni.showModal({
            title: '提示',
            content: content,
            success: (res) => {
                resolve(res.confirm)
            }
        })
    })
}
await asyncConfirm(content)
文档更新时间: 2020-11-17 16:44   作者:叶洪