我想在convertToHtml处理完数据后返回数据,但它只是在转换过程结束之前返回数据。对如何实施它有什么建议吗?
exports.extractData = async function(path) {
var mammoth = require("mammoth");
return await mammoth.convertToHtml({path: path}, options)
.then(function(result) {
var html = result.value;
var messages = result.messages;
return html;
}
}根据我的建议,我改为:
exports.extractData = async function(path) {
var mammoth = require("mammoth");
const aux = await mammoth.convertToHtml({path: path}, options);
return aux.value;
}
}然而,我得到的是:
Promise { <pending> }我这样称呼这个模块:
var x = require("./index");
console.log(x.extractWord('docx'));我怎样才能得到结果呢?
谢谢
发布于 2022-02-16 01:47:39
任何async函数都会返回一个承诺:您需要await您的async函数,如下所示:
给你的模块:
const mammoth = require("mammoth");
exports.extractData = async function(path) {
const aux = await mammoth.convertToHtml({path: path}, options);
return aux.value;
}然后你可以这样说:
const {extractData} = require('whatever-my-module-name-is');
async function main() {
const extractedData = await extractData();
process( extractedData ) ;
}
main()
.then( () => process.exit(0) )
.catch( err => {
console.error(err);
process.exit(1);
});发布于 2022-02-15 23:42:39
在使用异步/等待时,不需要.then。异步/等待只是对承诺的一个简洁的替代,您不应该将它们一起使用。
exports.extractData = async function(path) {
var mammoth = require("mammoth");
return await mammoth.convertToHtml({path: path}, options);
}https://stackoverflow.com/questions/71134714
复制相似问题