gpt4 book ai didi

javascript - 回调不是函数——Node js管理异步调用

转载 作者:行者123 更新时间:2023-12-03 03:07:48 24 4
gpt4 key购买 nike

我正在使用下面的代码从 ftp 读取文件。

var JSFtp = require("jsftp");
var config = require('./config.json');
var FtpService = function () {};
// Connect to FTP
var Ftp = new JSFtp({
host: config.ftp.host,
port: config.ftp.port,
user: config.ftp.user,
pass: config.ftp.pass
});

FtpService.prototype.getFTPDirectoryFiles = function (callback) {
Ftp.list(config.ftp.FilePath, function(err, res) {
if(err){
console.log('File Listing Failed', err);
callback(null,err);
return;
}
else{
console.log(res);
callback(null,res);
}
});
};


FtpService.prototype.closeFtp = function () {
console.log('Disconnect to FTP');
};



module.exports = new FtpService();

现在我将此 ftp 服务 js 文件包含在我的 index.js 中

var ftp = require('./ftpservice.js');
ftpfiles = ftp.getFTPDirectoryFiles();
console.log(ftpfiles);

getFTPDirectoryFiles 返回文件列表。但如果我通过 index.js 调用它,我会得到未定义的 ftpfiles。这是因为 Node js 的异步特性。所以我想添加回调但是我收到错误回调未在函数 FtpService.prototype.getFTPDirectoryFiles 中定义

最佳答案

在这一行中:

ftpfiles = ftp.getFTPDirectoryFiles()

您没有传递该函数所需的回调,并且尝试使用该函数未返回的返回值。

你需要做这样的事情:

var ftp = require('./ftpservice.js');
ftp.getFTPDirectoryFiles(function(err, ftpfiles) {
if (err) {
console.log(err);
} else {
console.log(ftpfiles);
}
});

关于javascript - 回调不是函数——Node js管理异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47090142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com