我正在使用node-ftp库,我想承诺某些方法(list()
和get()
)。
我知道有基于承诺的包装器,但我需要返回可读流(而不是写入本地文件)并且 node-ftp 允许这样做。
该get()
方法似乎遵循正确的承诺模式,但我无法让它发挥作用:
list([< string >path, ][< boolean >useCompression, ]< function >callback)
未承诺的代码按预期工作
// THIS WORKS
var Client = require('ftp');
var c = new Client();
c.on('ready', function () {
c.list('/mypath', function (err, data) {
console.log(data)
})
});
c.connect()
..承诺的代码不会:
// THIS DOES NOT WORK
var Client = require('ftp');
var { promisify } = require('util');
var c = new Client();
var ftp_list = promisify(c.list)
c.on('ready', function () {
ftp_list('/mypath')
.then(data => {
console.log(data)
})
.catch((err) => {
console.log('Error', err);
});
});
c.connect()
返回错误:TypeError: this._pasv is not a function
错误中的存在this.
让我认为这是一个箭头函数问题,但使用普通函数也不起作用。
这个 node-ftp 功能(以及类似的c.get()
)可以这样被承诺吗?还是我错过了什么?