我想在 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'));
我怎樣才能得到結果?
謝謝
uj5u.com熱心網友回復:
任何async函式都會回傳一個承諾:你需要await你的async函式,像這樣:
給你的模塊:
exports.extractData = async function(path) {
var mammoth = require("mammoth");
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);
});
uj5u.com熱心網友回復:
當您使用 async/await 時,您不需要 .then。async/await 只是 Promise 的一個很好的替代品,你不應該一起使用它們
exports.extractData = async function(path) {
var mammoth = require("mammoth");
return await mammoth.convertToHtml({path: path}, options);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/424024.html
