关于async/await 与Promise.all() 一起用的问题 ,await好像失灵了一样感激不尽

问题描述
await包装Promise.all()await并没有实现响应的效果
问题出现的环境背景及自己尝试过哪些方法
实现一个查看文件夹下面的所有文件夹名称列表的函数,用了async/await去包装Promise.all返回最后的结果,打印函数的返回值是Promise{},感觉await并没有生效
相关代码
constfs=require('fs')
constpath=require('path')
const{promisify}=require('util')
constreadDir=promisify(fs.readdir)
conststat=promisify(fs.stat)
/**
*获取文件夹目录
*@param{*}pathVal
*/
asyncfunctiongetDirList(pathVal){
constparam=path.resolve(__dirname,pathVal)
constisDir=awaitstat(param)
//当前目录不是文件夹返回false
if(!isDir.isDirectory())returnfalse
constdir=awaitreadDir(param)
constlist=[]
dir.forEach(name=>{
constpt=path.join(param,name)
list.push(stat(pt))
})
constdirList=[]
constdata=awaitPromise.all(list)
data.forEach((state,index)=>{
state.isDirectory()?dirList.push(dir[index]):null
})
returndirList
}
letresualt=getDirList('../../directory')
console.log('......')
console.log(resualt)
你期待的结果是什么?实际看到的错误信息又是什么?
期待结果:......['directoryName1','directoryName2']实际看到的错误信息:......Promise{}
繁花不似锦
浏览 4099回答 2
2回答

暮色呼如

和你之前的async/promise没关系。你在调用letresualt=getDirList('../../directory')的时候,getDirList()这是一个异步的方法啊,你用同步的方式去调用,肯定会出现Promise{}。多写几次回调的方式,对理解promise/async会有帮助的。可以尝试一下下面这种方式(async()=>{letresualt=awaitgetDirList('../../directory')console.log('......')console.log(resualt)})();下次把代码排版调一下哈,这个排版你看着感觉怎样
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript