我正在创建一个脚本,该脚本从节点中的pdf读取数据,我使用pdf_text_extract
,并尝试使用Bluebird返回数据。
Types.js:
var pdf = require('pdf');
var Types = {
read: function(file, extension) {
pdf.extract(file, function(error, data) {
console.log(data);
});
}
};
module.exports = Types;
数据是[功能],这显然是错误的。
Pdf.js:
var Promise = require('bluebird');
var pdf_text_extract = require('pdf-text-extract');
var Pdf = {
extract: function(file, cb) {
return new Promise(function(resolve, reject) {
if (reject) {
console.log(reject);
}
pdf_text_extract(file, function(error, data) {
if (error) {
console.log(error);
}
resolve(data);
});
});
}
};
module.exports = Pdf;
我试图访问正在调用Types.js的其他存档中的数据。
答案 0 :(得分:2)
不,data
不是函数。您传递的cb
函数完全忽略并且从未执行过,您看到的日志来自console.log(reject);
(因为reject
始终是真的)。< / p>
正确
var pdf = {
extract: function(file) {
return new Promise(function(resolve, reject) {
pdf_text_extract(file, function(error, data) {
if (error)
reject(error);
else
resolve(data);
});
});
}
};
var types = {
read: function(file, extension) {
return pdf.extract(file).then(function(data) {
console.log(data);
}, function(error) {
console.log(error);
});
// returns a promise that fulfills with undefined once data or error are received
}
};
或者更简单
var pdf = {
extract: Promise.promisify(pdf_text_extract)
};