账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于async/await 与Promise.all() 一起用的问题 ,await好像失灵了一样
    • 纯天然无毒无添加防腐剂2019-07-09 00:00
    • 10
    57
    0

    问题描述

    await 包装Promise.all() await 并没有实现响应的效果

    问题出现的环境背景及自己尝试过哪些方法

    实现一个查看文件夹下面的所有文件夹名称列表的函数,用了async/await 去包装Promise.all 返回最后的结果,打印函数的返回值是Promise{<pending>} ,感觉await 并没有生效

    相关代码

    const fs = require('fs')
    const path = require('path')
    const { promisify } = require('util')
    const readDir = promisify(fs.readdir)
    const stat = promisify(fs.stat)
    
    /**
     * 获取文件夹目录
     * @param {*} pathVal 
     */
    async function getDirList(pathVal) {
      const param = path.resolve(__dirname, pathVal)
      const isDir = await stat(param)
      // 当前目录不是文件夹返回 false
      if (!isDir.isDirectory()) return false
      const dir = await readDir(param)
      const list = []
      dir.forEach(name => {
        const pt = path.join(param, name)
        list.push(stat(pt))
      })
      const dirList = []
      const data = await Promise.all(list)
      data.forEach((state, index) => {
        state.isDirectory() ? dirList.push(dir[index]) : null
      })
      return dirList
    }
    
    let resualt= getDirList('../../directory')
    console.log('......')
    console.log(resualt)

    你期待的结果是什么?实际看到的错误信息又是什么?

    期待结果:
    ......
    ['directoryName1','directoryName2']
    实际看到的错误信息:
    ......
    Promise{<pending>}

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部