一、async与await
-
概念 async:本质上就是generator生成器函数 await:就相当于是yield产出 -
优势
- 内置的执行器是co —— 简化了异步的执行
- 语义化更强
- 更广的使用性 —— 后面可以不止是promise对象
- 返回值一定是promise对象(内部自动触发resolve和reject)
-
基本使用 const fs = require('fs');
const util = require('util');
let readFile = util.promisify(fs.readFile)
async function read() {
try {
let value1 = await readFile('./name.txt', 'utf-8');
let value2 = await readFile(value1, 'utf-8');
let value3 = await readFile(value2, 'utf-8');
console.log('hello world');
return value3
} catch (error) {
console.log('91: ' + error)
}
}
let promise = read();
promise.then((val) => {
console.log(val);
});
-
实现all得错误忽略 用all方法来执行异步操作,就会直接抛出错误没法执行后面的,那么我们可以通过async和await/try-catch/set来配合实现这个功能,平常不会这么做 let fs = require('fs');
let util = require('util')
let readFile = util.promisify(fs.readFile)
async function read(){
let value1, value2, value3;
let res = new Set();
try{
value1 = await readFile('name.txt','utf-8');
}catch(err){
}
try{
value2 = await readFile('number.tx','utf-8');
}catch(err){
}
try{
value3 = await readFile('score.txt','utf-8');
}catch(err){
}
res.add(value1)
res.add(value2)
res.add(value3)
return res;
}
read().then((val)=>{
console.log(val);
})
|