从零开始学Node.js(六):async/await的使用

从零开始学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();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值