首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在node.js模块中返回承诺

在node.js模块中返回承诺
EN

Stack Overflow用户
提问于 2022-02-15 23:33:58
回答 2查看 200关注 0票数 0

我想在convertToHtml处理完数据后返回数据,但它只是在转换过程结束之前返回数据。对如何实施它有什么建议吗?

代码语言:javascript
复制
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;
    }
}

根据我的建议,我改为:

代码语言:javascript
复制
exports.extractData = async function(path) {
    var mammoth = require("mammoth");
     const aux = await mammoth.convertToHtml({path: path}, options);
     return aux.value;
    }
}

然而,我得到的是:

代码语言:javascript
复制
Promise { <pending> }

我这样称呼这个模块:

代码语言:javascript
复制
var x = require("./index");
console.log(x.extractWord('docx'));

我怎样才能得到结果呢?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-16 01:47:39

任何async函数都会返回一个承诺:您需要await您的async函数,如下所示:

给你的模块:

代码语言:javascript
复制
const mammoth = require("mammoth");

exports.extractData = async function(path) {

  const aux = await mammoth.convertToHtml({path: path}, options);

  return aux.value;
}

然后你可以这样说:

代码语言:javascript
复制
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);
});
票数 1
EN

Stack Overflow用户

发布于 2022-02-15 23:42:39

在使用异步/等待时,不需要.then。异步/等待只是对承诺的一个简洁的替代,您不应该将它们一起使用。

代码语言:javascript
复制
exports.extractData = async function(path) {
    var mammoth = require("mammoth");
     return await mammoth.convertToHtml({path: path}, options);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71134714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档