Javascript 承诺,嵌套函数

Ale*_*öld 2 javascript promise

我的问题是我正在运行 node.js,并且我有 2 个需要以特定顺序运行的函数,但是他们没有在此返回承诺。所以我想知道我将如何重写它以确保主函数会返回一个承诺,如果我有嵌套函数,我是否只运行第一个函数解析中的第二个函数?

这是代码:

handleMd5Convert = (file) => {
  fs.readFile(file, (err, buf) => {
    fs.rename(file, directoryPath + md5(buf) + '.mp3', (err) => {
      if (err) console.log('ERROR: ' + err);
    })
  })
})
Run Code Online (Sandbox Code Playgroud)

HandleMd5Convert 应该能够。then()

/亚历克斯

Mar*_*yer 5

您应该能够将整个内容包装在 a 中new Promise()并使用resolve()&reject()来处理成功和错误:

handleMd5Convert = (file) => {
  return new Promise((resolve, reject) => {
    fs.readFile(file, (err, buf) => {
      if (err) return reject(err)
      fs.rename(file, directoryPath + md5(buf) + '.mp3', (err) => {
        if (err) return reject(err);
        resolve()
      })
    })
  })
}

handleMd5Convert('test.txt')
.then(() => console.log("done"))
.catch(err => console.log("error:", err))
Run Code Online (Sandbox Code Playgroud)