linux async,ES6 async 函数介绍

导读

async 是 ES7 才有的与异步操作有关的关键字,和 Promise , Generator 有很大关联的。

e86883d5f2204e26a8dafedba0ea419e.png

async

语法

async function name([param[, param[, ... param]]]) { statements }

name: 函数名称。

param: 要传递给函数的参数的名称。

statements: 函数体语句。

返回值

async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。

async function helloAsync(){

return "helloAsync";

}

console.log(helloAsync()) // Promise {: "helloAsync"}

helloAsync().then(v=>{

console.log(v); // helloAsync

})

async 函数中可能会有 await 表达式,async 函数执行时,如果遇到 await 就会先暂停执行 ,等到触发的异步操作完成后,恢复 async 函数的执行并返回解析值。

await 关键字仅在 async function 中有效。如果在 async function 函数体外使用 await ,你只会得到一个语法错误。

function testAwait(){

return new Promise((resolve) => {

setTimeout(function(){

console.log("testAwait");

resolve();

}, 1000);

});

}

async function helloAsync(){

await testAwait();

console.log("helloAsync");

}

helloAsync();

// testAwait

// helloAsync

await

await 操作符用于等待一个 Promise 对象, 它只能在异步函数 async function 内部使用。

语法

[return_value] = await expression;

expression: 一个 Promise 对象或者任何要等待的值。

返回值

返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身。

如果一个 Promise 被传递给一个 await 操作符,await 将等待 Promise 正常处理完成并返回其处理结果。

function testAwait (x) {

return new Promise(resolve => {

setTimeout(() => {

resolve(x);

}, 2000);

});

}

async function helloAsync() {

var x = await testAwait ("hello world");

console.log(x);

}

helloAsync ();

// hello world

正常情况下,await 命令后面是一个 Promise 对象,它也可以跟其他值,如字符串,布尔值,数值以及普通函数。

function testAwait(){

console.log("testAwait");

}

async function helloAsync(){

await testAwait();

console.log("helloAsync");

}

helloAsync();

// testAwait

// helloAsync

await针对所跟不同表达式的处理方式:

Promise 对象:await 会暂停执行,等待 Promise 对象 resolve,然后恢复 async 函数的执行并返回解析值。

非 Promise 对象:直接返回对应的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值