从零开始学Node.js(六):async/await的使用
文章目录
ES6常见语法的使用
let和const
通过一个简单的小例子来体会一下块作用域吧~
/*
1.let和const
- let和var一样,都是用来定义变量
- const是用来定义常量的
- const和let都是块作用域
*/
if(true){
let a=123;
}
//你可以看到a是打印不出来的,因为是undefined
//如果我们将let替换成var,控制台是可以顺利打印出来123的
console.log(a);
箭头函数
/*
2.箭头函数
*/
setTimeout(function (){
console.log('running');
},1000)
setTimeout(()=>{
console.log('hi,running');
},1000)
对象、属性的简写
/*
3.对象、属性的简写
*/
//未简写前
var name='nayelya';
var age='18';
var demo01={
age:age,
"name":name,
}
console.log(demo01.name);
//属性简写后
var demo02={
age,
name
}
console.log(demo02.age);
var demo03={
name,
//方法简化版
run(){
console.log(name+' is running...');
},
//未简化
eat:function(){
console.log(name+' is eating...');
}
}
demo03.run();
demo03.eat();
模板字符串
/*
4.模板字符串
如果不能正常输出,多数是因为需要Node.js支持ES6,具体方法可以自行百度
*/
var name="Nayelya";
var age=18;
console.log('${name}的年龄是${age}');
Promise
/*Promise:主要用来处理异步*/
function getData(callback){
//ajax
setTimeout(function(){
var name='张三';
callback(name);
},1000);
}
//外部获取异步方法里的数据
getData(function(data){
console.log("output:"+data);
})
var p=new Promise(function(resolve,reject){
setTimeout(function(){
var name='李四';
resolve(name)
},1000)
})
p.then(function(data){
console.log("promise output:"+data);
})
Async、Await和Promise的使用
async让方法变成异步的,await是等待异步方法执行完成。
function test01(){
return 'hello~';
}
//[Function: test]
console.log(test01);
//hello~
console.log(test01());
async function test02(){
return 'hello again~';
}
//[AsyncFunction: test02]
console.log(test02);
//Promise { 'hello again~' }
console.log(test02());
//await必须用在异步方法中,所以下面这一行会报错
//console.log(await test02());
async function main(){
//获取异步方法中的数据
var data=await test02();
console.log(data);
}
main();
遗留的练习
上一节的练习请点击这里!
import { findSeries, dir } from "async";
var fs=require('fs');
//定义isDir方法判断一个资源到底是目录还是文件
async function isDir(path) {
return new Promise((resolve,reject) => {
fs.stat(path, (error, stats) => {
if (error) {
console.log(error);
return;
}
if (stats.isDirectory()) {
resolve(true);
} else {
resolve(false);
}
})
})
}
//获取wwwroot里面的所有资源,循环遍历
function main(){
var dirArr=[];
var path='./wwwroot';
//注意awiat需要在一个async方法中!
fs.readdir(path,async (err,data)=>{
if(err){
console.log(err);
return;
}
for(var i=0;i<data.length;i++){
if(await isDir(path+'/'+data[i])){
dirArr.push(data[i]);
}
}
console.log(dirArr);
})
}
main();