首页 > 解决方案 > 如何从 Promise 中检索数据

问题描述

我正在尝试使用 Mammoth Node.js 包将文件从 Docx 转换为 HTML。Mammoth 自述文件建议使用以下格式转换文件:

var mammoth = require("mammoth");

mammoth.convertToHtml({path: "path/to/document.docx"})
    .then(function(result){
        var html = result.value; // The generated HTML
        var messages = result.messages; // Any messages, such as warnings during conversion
    })
    .done();

我已将此模板代码放在一个函数中,并在调用该函数后convertDoc尝试在代码中的其他位置使用值。htmlconvertDoc

在函数中的任何位置放置return html语句convertDoc将不允许我使用存储的 html,但是我可以将正确的 html 内容输出到控制台。我需要关于如何从承诺之外返回/使用 html 变量的建议,谢谢。

标签: javascriptnode.jspromisemammoth

解决方案


当函数返回 Promise 时,您会从函数中获得 Promise,并为 Promise 解决时设置某种效果。你可以通过使用then. 这是一个相当粗略的解释,我建议您阅读有关承诺的文档。

以下是代码的外观:

const mammothMock = {
  convertToHtml: path => Promise.resolve({value: `<p>Test Html from ${path}</p>`})
}

const mammoth = mammothMock;

const convertFileToHtml = youCouldTakeAPathHere => mammoth
  .convertToHtml(youCouldTakeAPathHere)
  .then(function(result){

      return result.value;
  })

convertFileToHtml('some/test/path.docx')
  .then(result => document.body.append(result))


推荐阅读