vue中异步函数async和await的用法

先说一下async的用法,它作为一个关键字放到函数前面,用于表示函数是一个异步函数,因为async就是异步的意思, 异步函数也就意味着该函数的执行不会阻塞后面代码的执行。 写一个async 函数。

async function timeout() {

return ‘hello world’;

}

语法很简单,就是在函数前面加上async 关键字,来表示它是异步的,那怎么调用呢?async 函数也是函数,平时我们怎么使用函数就怎么使用它,直接加括号调用就可以了,为了表示它没有阻塞它后面代码的执行,我们在async 函数调用之后加一句console.log。

async function timeout() {

return ‘hello world’

}

timeout();

console.log(‘虽然在后面,但是我先执行’);

打开浏览器控制台,我们看到了。

在这里插入图片描述

async 函数 timeout 调用了,但是没有任何输出,它不是应该返回 ‘hello world’, 先不要着急, 看一看timeout()执行返回了什么? 把上面的 timeout() 语句改为console.log(timeout())。

async function timeout() {

return ‘hello world’

}

console.log(timeout());

console.log(‘虽然在后面,但是我先执行’);

继续看控制台。

在这里插入图片描述

原来async 函数返回的是一个promise 对象,如果要获取到promise 返回值,我们应该用then 方法, 继续修改代码。

async function timeout() {

return ‘hello world’

}

timeout().then(result => {

console.log(result);

})

console.log(‘虽然在后面,但是我先执行’);

在这里插入图片描述

我们获取到了"hello world’, 同时timeout 的执行也没有阻塞后面代码的执行,和 我们刚才说的一致。

这时,你可能注意到控制台中的Promise 有一个resolved,这是async 函数内部的实现原理。如果async 函数中有返回一个值 ,当调用该函数时,内部会调用Promise.solve() 方法把它转化成一个promise 对象作为返回,但如果timeout 函数内部抛出错误呢? 那么就会调用Promise.reject() 返回一个promise 对象, 这时修改一下timeout 函数。

async function timeout(flag) {

if (flag) {

return ‘hello world’

} else {

throw ‘my god, failure’

}

}

console.log(timeout(true)) // 调用Promise.resolve() 返回promise 对象。

console.log(timeout(false)); // 调用Promise.reject() 返回promise 对象。

控制台如下:

在这里插入图片描述

如果函数内部抛出错误, promise 对象有一个catch 方法进行捕获。

timeout(false).catch(err => {

console.log(err)

})

async 关键字差不多了,我们再来考虑await 关键字,await是等待的意思,那么它等待什么呢,它后面跟着什么呢?其实它后面可以放任何表达式,不过我们更多的是放一个返回promise 对象的表达式。注意await 关键字只能放到async 函数里面

JavaScript

  • js的基本类型有哪些?引用类型有哪些?null和undefined的区别。

  • 如何判断一个变量是Array类型?如何判断一个变量是Number类型?(都不止一种)

  • Object是引用类型嘛?引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?

  • JS常见的dom操作api

  • 解释一下事件冒泡和事件捕获

  • 事件委托(手写例子),事件冒泡和捕获,如何阻止冒泡?如何组织默认事件?

  • 对闭包的理解?什么时候构成闭包?闭包的实现方法?闭包的优缺点?

  • this有哪些使用场景?跟C,Java中的this有什么区别?如何改变this的值?

  • call,apply,bind

  • 显示原型和隐式原型,手绘原型链,原型链是什么?为什么要有原型链

  • 创建对象的多种方式

  • 实现继承的多种方式和优缺点

  • new 一个对象具体做了什么

  • 手写Ajax,XMLHttpRequest

  • 变量提升

  • 举例说明一个匿名函数的典型用例

  • 指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?有哪些内置对象和内置函数?

  • attribute和property的区别

  • document load和document DOMContentLoaded两个事件的区别

  • JS代码调试

  • 开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 28
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue使用asyncawait,可以通过在方法前面加上async关键字来定义异步函数,然后在需要等待的地方使用await关键字等待异步操作的结果。例如,可以在Vue组件的方法使用asyncawait来处理异步请求。 引用\[1\]的示例代码展示了在Vue使用asyncawait的基本用法。可以定义一个异步函数,使用await关键字等待axios.get方法返回的Promise对象的结果。然后可以在异步函数外部使用.then方法来处理异步操作的结果。 引用\[2\]提到,async/await是一种编写异步代码的新方法,它建立在Promise的基础上,让异步代码看起来更像同步代码。它的使用场景包括处理异步请求、处理定时器、处理文件读写等。 总结起来,在Vue使用asyncawait可以更方便地处理异步操作,使代码更加清晰易读。可以在Vue组件的方法使用async关键字定义异步函数,然后使用await关键字等待异步操作的结果。这样可以避免回调地狱,使代码更加简洁和易于维护。 #### 引用[.reference_title] - *1* [Vue接口调用(三)async/await用法](https://blog.csdn.net/m0_55990909/article/details/123981292)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue使用asyncawait(一文教会你)](https://blog.csdn.net/m0_52040370/article/details/124660219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Vueasyncawait的使用](https://blog.csdn.net/m0_58974838/article/details/117636647)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值