await的几个小技巧

await是个很好用的语法,能以接近同步的方式执行异步的操作,跟回调和链式执行比,代码非常简洁。不过它也有些限制,它只能包含在模块的顶级代码块里,像forEach()之类函数的内部执行段内就不能包含await语句了,不过也好替换解决:比如

//下面这样写是错误的
dataset.forEach(item=>{ 
	await promisefunc(item); 
	})
//而下面这样写是可以的
for (const item of dataset) { 
	await promisefunc(item); 
	}

再说另一个场景,比如我想获取某个指定目录下的文件列表,正常逻辑是先调用fs.access检查看目录是否存在,不存在的话,直接返回,存在的话,再调用fs.readdir读取目录内容,而js的风格是直接readdir,要么出错,要么得到目录内容。我用fs.promises.readdir,如果这个目录不存在的话,会抛出error,我不想try catch方式处理这个error,可以这样弄一下:

let diritems=await fs.promises.readdir(targetdir).catch(e=>{ return []; });

当然这样处理无法区分空目录和不存在的目录,不过在我的场景下是够用的,于是就这样简单处理了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值