问题描述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)//当前目录不是文件夹返回falseif(!isDir.isDirectory())returnfalseconstdir=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{}
2 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
和你之前的async/promise没关系。你在调用letresualt=getDirList('../../directory')的时候,getDirList()这是一个异步的方法啊,你用同步的方式去调用,肯定会出现Promise{}。多写几次回调的方式,对理解promise/async会有帮助的。 可以尝试一下下面这种方式(async()=>{letresualt=awaitgetDirList('../../directory')console.log('......')console.log(resualt)})();下次把代码排版调一下哈,这个排版你看着感觉怎样
添加回答
举报
0/150
提交
取消