【发布时间】:2019-04-04 04:55:11
【问题描述】:
我尝试承诺SFTPWrapper 并解决这个问题。我不确定它是否发生在其他物体上。
所以如果我只是promisify 一个 SFTPWrapper 函数,比如readdir,那么蓝鸟将拥有unhandledRejection : "Cannot read property 'readdir' of undefined" error。我试过util.promisify,同样的错误。
但是如果 promisifyAll(SFTPWrapper) 并且它按预期工作。但这是为什么呢?
----更新-----
我使用的代码,
var Client = require('ssh2').Client
var conn = new Client()
conn.on('ready', function() {
conn.sftp(async function(err, sftp) {
if (err) throw err
try {
// promisify will have Cannot read property 'readdir' of undefined error
// both bluebird and util have the error
//let readdirAsync = Promise.promisify(sftp.readdir)
let readdirAsync = util.promisify(sftp.readdir)
list = await readdirAsync(remotePathToList)
// Promise.promisifyAll(sftp) work
const sftp2 = Promise.promisifyAll(sftp)
let list = await sftp2.readdirAsync(toRead)
【问题讨论】:
-
您必须准确地向我们展示您正在使用的哪些 promisify 代码对我们没有帮助,以进一步帮助您。请展示 promisify 操作和 promisified 函数使用的实际代码。一般来说,关于代码的问题需要包含您遇到问题的实际代码(至少这是确保我们可以快速帮助您而无需大量其他问题的最佳方式)。
-
您好,我已经展示了代码,其实很简单。
标签: node.js promise es6-promise bluebird