如何将我的代码从回调函数更改为承诺 [重复]
Posted
技术标签:
【中文标题】如何将我的代码从回调函数更改为承诺 [重复]【英文标题】: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)
)
【问题讨论】:
【参考方案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').promises
的readdir()
的异步版本,您就可以异步读取目录
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")
【讨论】:
以上是关于如何将我的代码从回调函数更改为承诺 [重复]的主要内容,如果未能解决你的问题,请参考以下文章