大佬教程收集整理的这篇文章主要介绍了如何从 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,请注明来意。