Promisify node-ftps 命令

Promisify node-ftps command

我试图承诺一个 node-ftps function in order to use async/await. I am referring to this github link,它解释了应该如何完成。我想出了以下代码,但它仍然无法正常工作。

我的承诺函数:


const ftpGetFile = async (ftps, source, destination) => {

    console.log(`FTP MGET ${source} => ${destination}`)
    return ftps.raw(`mget -e -O ${destination} ${source}`).exec((error, result) => {
        return new Promise((resolve, reject) => {
            if (error) {
                console.log("ftp fget error", error)
                reject(error)
            } else {
                console.log("ftp fget succss", result)

                resolve(result)
            }
        })
    })
}

我怎么称呼它

for (let index = 0; index < listToSync.length; index++) {

    // ....
    await ftpGetFile(ftp, source, destination)
    // ....
}

您需要 return 承诺本身,然后在回调中解析为 exec:

const ftpGetFile = async (ftps, source, destination) => {
  console.log(`FTP MGET ${source} => ${destination}`)

  return new Promise((resolve, reject) => {
    ftps.raw(`mget -e -O ${destination} ${source}`).exec((error, result) => {
      if (error) {
        console.log("ftp fget error", error)
        reject(error)
      } else {
        console.log("ftp fget succss", result)
        resolve(result)
      }
    })
  })
}