【问题标题】:How do I change my code from callback function to promise [duplicate]如何将我的代码从回调函数更改为承诺 [重复]
【发布时间】:2021-12-12 17:24:30
【问题描述】:

我在下面有这样的代码。代码仍然使用回调函数,我想使用 promise 进行更改。我犹豫如何改变它们。能帮忙改一下吗


const fs = require('fs')

fs.readdir('/', (err, result) => {
  if (err) {
    throw new Error(err.message)
  }
  console.log(result)
})

【问题讨论】:

    标签: javascript promise


    【解决方案1】:

    fs.readdir('/') 已经被承诺,您需要像您一样使用 chaining 或使用 async/await 内的 IIFE 语法糖来解决它

    (async () => {
       try{
            const result = await fs.readdir('/');
            console.log(result)
       }catch(err){
          console.log(err.message)
       }
    })();
    

    【讨论】:

    • 这仅适用于您需要正确版本的fs。 -> const fs = require('fs').promises
    【解决方案2】:

    如果您导入位于require('fs').promisesreaddir() 的异步版本,您就可以异步读取目录

    const fs = require('fs').promises
    
    const asyncReadDir = async(dirName) => {
        try {
             const dirData = await fs.readdir(dirName)
             console.log("Read successfully")
             // other code here
        } catch(error){
             // catch errors
             console.log(error)
        }
    }
    
    asyncReadDir("/downloads")
    

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 2018-09-19
      • 2020-08-26
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 2021-04-18
      相关资源
      最近更新 更多