程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何从 then() 导出值?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何从 then() 导出值??

开发过程中遇到如何从 then() 导出值?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何从 then() 导出值?的解决方法建议,希望对你解决如何从 then() 导出值?有所启发或帮助;

我想在一个模块中包含以下Js:

const fs = require('fs');
const got = require('got');
const Jsdom = require("Jsdom");
const { JsDOM } = Jsdom;

const vgmUrl = 'https://example.com/someHTMl.HTML';


got(vgmUrl).then(response => {
    var dom = new JsDOM(response.body);
    var textContent = dom.window.document.getElementByID("__NEXT_DATA__").textContent;
    var JsONData = JsON.parse(textContent);
    return JsONData.props.pageProps.text.vaccinatIEs.data.kpi_@R_695_10586@l.tab_@R_695_10586@l_estimated.value;
}).then(out => {
    //console.log(out);
    module.exports = out;
});

当我使用:

const module = require('./module.Js');

然后使用 console.log(modulE); 返回一个空对象 {}

如何导出最后一个 then() 中变量 'out' 的值?

解决方法

Node.js 建立在异步调用之上。在你的情况下,我会做这样的事情。

const fs = require('fs');
const got = require('got');
const jsdom = require("jsdom");
const {JSDOM} = jsdom;

const vgmUrl = 'https://example.com/somehtml.html';

let outData = null;

const requestsCallBACks = [];


got(vgmUrl).then(response => {
    var dom = new JSDOM(response.body);
    var textContent = dom.window.document.getElementById("__NEXT_DATA__").textContent;
    var JSONData = JSON.parse(textContent);
    return         JSONData.props.pageProps.text.vaccinaties.data.kpi_@R_695_10586@l.tab_@R_695_10586@l_estimated.value;
}).then(out => {
    //console.log(out);
    outData = out;
    requestsCallBACks.forEach(cb => cb(out));
});

module.exports = () => {

    // If out data is already available just return it
    if (outData) {    
        return outData;
    }

    // Store all requests to return outData when available
    return new Promise(resolve => {
        requestsCallBACks.push(resolvE);
    });

}

何时需要使用:

const module = require('./module.js');
async function doSomething() {
   const data = await module();
}
,

我之前遇到过这个问题,发现如果模块内部有异步函数,我就不能导出“真实”对象,我不能在模块的顶层使用 await,我也不能像你那样在函数内部导出.因此,解决方案带有 javascript 的性质。您必须像 Georgi B. Nikolov 在评论中提到的那样导出对象(或异步函数)的承诺。

大佬总结

以上是大佬教程为你收集整理的如何从 then() 导出值?全部内容,希望文章能够帮你解决如何从 then() 导出值?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:如何从