Return node.js 模块中的承诺
Return a promise in a node.js module
我想 return convertToHtml 处理后的数据,但它只是 return 转换过程结束前的数据。关于如何实施它有什么建议吗?
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'));
如何获取结果?
谢谢
当您使用 async/await 时,您不需要 .then。 async/await 只是 promises 的完美替代品,您不应该将它们一起使用
exports.extractData = async function(path) {
var mammoth = require("mammoth");
return await mammoth.convertToHtml({path: path}, options);
}
任何async
函数returns一个承诺:你需要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);
});
我想 return convertToHtml 处理后的数据,但它只是 return 转换过程结束前的数据。关于如何实施它有什么建议吗?
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'));
如何获取结果?
谢谢
当您使用 async/await 时,您不需要 .then。 async/await 只是 promises 的完美替代品,您不应该将它们一起使用
exports.extractData = async function(path) {
var mammoth = require("mammoth");
return await mammoth.convertToHtml({path: path}, options);
}
任何async
函数returns一个承诺:你需要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);
});