为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花不似锦 2019-07-28 12:07:49
问题描述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)
})();
下次把代码排版调一下哈,这个排版你看着感觉怎样
                            
查看完整回答
反对 回复 2019-07-28
  • 2 回答
  • 0 关注
  • 4098 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信