Async总结

9 篇文章 0 订阅

async是异步操作的关键字,是generator函数的语法糖,具体语法呢:

async function 函数名称( 参数名称 ){函数体},来举个栗子:

1.1这里返回的是一个promise对象:

Promise 对象只有:从 pending 变为 fulfilled 和从 pending 变为 rejected 的状态改变。只要处于 fulfilled 和 rejected ,状态就不会再变了即 resolved(已定型)。

async function helloAsync(){

    return "helloAsync";

}

console.log(helloAsync());  //Promise { 'helloAsync' }

helloAsync().then( v=>{

    console.log(v);  //helloAsync

})

 

1.2函数内有await表达式

当然函数里会有await表达式,当函数执行的时候遇到await会暂停执行,等到异步操作完毕后,继续进行解析,也就是可以把它看做一个等待器,就比如盖房子一样先弄好门窗,再进行刷漆,如果有await那么它先执行,举个栗子:

// await测试

        function Await() {

            console.log("遇到await啦,请等待...");

            return new Promise((resolve) =>{

                setTimeout(function(){

                    console.log("Await执行完毕");

                    resolve();

                },10000)

            })

        }

        // async

        async function helloAsync(){

            await Await();

            console.log("你好async");

        }

        helloAsync();

执行中

执行完毕

当然await只在async function里有效,如果在函数体外面的话会报错

1.3

await 操作符用于等待一个 Promise 对象, 它只能在异步函数 async function 内部使用。返回Promise对象的处理结果,如果等待的不是Promise对象,则返回本身。举个栗子:

function Await(x){

    return new Promise(resolve =>{

        setTimeout(() =>{

            resolve(x)

        },2000)

    });

}

async function helloAsync(){

    var x = await Await('你好await');

    console.log(x);

}

// 调用

helloAsync();

这里呢会执行Await 有2s的等待时间 setTimeout(),当然await后面跟着Promise对象,其后也可以跟普通函数,字符串等。

function testAwait(){

    console.log(testAwait);

}

async function helloAsync(){

    await testAwait(); //

console.log(helloAsync());

//[Function:testAwait]Promise{ <pending> } 无限循环知道pending状态转换为fuliflled状态停止

}

helloAsync();

testAwait();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值