当前位置:网站首页>Promise (三) async/await
Promise (三) async/await
2022-08-05 05:47:00 【要不要买菜啊】
async 函数
async 函数是使用async
关键字声明的函数。 async 函数是AsyncFunction构造函数的实例, 并且其中允许使用await
关键字。async
和await
关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用promise
。
特点
async function main(){
//1. 如果返回值是一个非Promise类型的数据,会返回一个resolved的promise对象,值为该数据
// return 521;
//2. 如果返回的是一个Promise对象
return new Promise((resolve, reject) => {
resolve('OK');
// reject('Error');
});
//3. 抛出异常
// throw "Oh NO";
}
let result = main();
console.log(result);
await 表达式
async function main(){
let p = new Promise((resolve, reject) => {
resolve('OK');
// reject('Error');
})
//1. 右侧为promise的情况
// let res = await p;
//2. 右侧为其他类型的数据
let res2 = await 20;
// console.log(res2); // 20
//3. 如果promise是失败的状态
// try{
// // let res3 = await p;
// }catch(e){
// console.log(e);
// }
}
main();
注意
async与await结合
const fs = require('fs');
const util = require('util');
// 将 API 转为promise形式的函数
const mineReadFile = util.promisify(fs.readFile);
//回调函数的方式
// fs.readFile('./resource/1.html', (err, data1) => {
// if(err) throw err;
// fs.readFile('./resource/2.html', (err, data2) => {
// if(err) throw err;
// fs.readFile('./resource/3.html', (err, data3) => {
// if(err) throw err;
// console.log(data1 + data2 + data3);
// });
// });
// });
//async 与 await
// 出错也不需要每一层都去判断,使用try...catch即可
async function main(){
try{
//读取第一个文件的内容
let data1 = await mineReadFile('./resource/1.html');
let data2 = await mineReadFile('./resource/2.html');
let data3 = await mineReadFile('./resource/3.html');
console.log(data1 + data2 + data3);
}catch(e){
console.log(e.code);
}
}
main();
边栏推荐
猜你喜欢
淘宝客APP带自营商城本地生活CPS外卖优惠电影票话费更新渠道跟单生活特权V3
《PyTorch深度学习实践》第十课(卷积神经网络CNN)
LabVIEW中如何实现任意形状的不规则按键
Cocos Creator Mini Game Case "Stick Soldier"
lingo入门——河北省第三届研究生建模竞赛B题
The cocos interview answers you are looking for are all here!
边缘盒子+时序数据库,美的数字化平台 iBUILDING 背后的技术选型
花花省V5淘宝客APP源码无加密社交电商自营商城系统带抖音接口
利用将网页项目部署到阿里云上(ngnix)
在小程序中关于js数字精度丢失的解决办法
随机推荐
NB-IOT智能云家具项目系列实站
网络协议基础-学习笔记
js判断文字是否超过区域
document.querySelector()方法
H5开发调试-Fiddler手机抓包
无法导入torchvision.io.read_image
The future of cloud gaming
网络排错基础-学习笔记
HelloWorld
Cocos Creator Mini Game Case "Stick Soldier"
Collection of error records (write down when you encounter them)
【FAQ】CCAPI Compatible EOS Camera List (Updated in August 2022)
GetEnumerator method and MoveNext and Reset methods in Unity
BIO,NIO,AIO实践学习笔记(便于理解理论)
cs231n学习记录
document.querySelector() method
UI刘海屏适配方式
LaTeX笔记
LeetCode刷题记录(2)
LaTeX 图片加标题 文本分栏自动换行