目录asyncasync函数定义作用async 函数中 return 值如何接受方式一方式二awaitawait定义作用关于await的注意点[[promiseValue]][pro
async函数是使用关键字声明的函数。async 是“异步”的简写,所以应该很好理解 async 用于申明一个 function 是异步的。
用于解决:异步程序产生的bug
####async函数的语法
async function name([param[, param[, ... param]]]) {
statements
}
参数:name 函数名称
param 要传递给函数的参数的名称
statements 包含函数主体的表达式 ,可以使用await
返回值: 一个全新的promise,这个promise要么会通过一个由async函数返回的值被解决,要么会通过一个从async函数中抛出的(或其中没有被捕获到的)异常被拒绝
下面为async的具体使用实例:
async function foo(p) {
console.log("foo run",p);
return 1;
}
var res = foo(1);
console.log(res);//{<fulfilled>: 1}
async函数一定会返回一个promise对象。如果一个async函数的返回值看起来不是promise,那么它将会被隐式地包装在一个promise中。
例如,如下代码:
async function foo() {
//promise.[[promiseValue]]
return 1
}
//等价于
function foo() {
return Promise.resolve(1)
}//{<fulfilled>: 1}
下面是对async的一些补充:
通过 promise.then-cb 形参获取
async function foo(){
console.log(222222);
return 123;
}
let res = foo();
res.then(data=>{
console.log(data);//123
})
第二种接受函数返回值的方式是 await
(async function (){
console.log('async run');
//第二种接受函数返回值的方式是 await
let res = await foo();
console.log(res);
})()
async function foo(){
console.log('foo run');
return 123;
}
//res作用:接受 async foo函数返回值 是promise
let res = foo();
await 的意思是等待,所以应该很好理解,await 等待某个操作完成。
await关键字的作用 就是获取 Promise中返回的内容, 获取的是Promise函数中resolve或者reject的值(await 作用是获取promise.[[promiseValue]]的值)
[[PromiseValue]]是个内部变量,外部无法得到,只能在then中获取。
使用async函数可以让代码简洁很多,不需要像Promise一样需要then,不需要写匿名函数处理Promise的resolve的值,也不需要定义多余的data变量,还避免了嵌套代码。
async/await 让 try/catch可以同时处理同步和异步的错误。在下面的示例中,try/catch不能处理JSON.parse的错误,因为它在Promise中,我们需要使用.catch,这样的错误会显得代码非常的冗余。
到此这篇关于前端常见面试题之async/await和promise区别的文章就介绍到这了,更多相关async/await和promise区别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 前端常见面试题之async/await和promise的区别
本文链接: https://www.lsjlt.com/news/165385.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0