gpt4 book ai didi

javascript - 运行前异步不等待功能

转载 作者:行者123 更新时间:2023-11-30 11:12:22 25 4
gpt4 key购买 nike

我正在尝试从计算机上保存的 HTML 解析规范网站。我可以根据要求发布文件。

我已经筋疲力尽地试图弄清楚为什么它不会同步运行。注释应该首先记录 CCCC,然后是 BBBB,最后是 AAAA

我正在运行的代码不会在第一个障碍处等待(它首先打印 AAAA...)。我是否错误地使用了 request-promise?这是怎么回事?

这是由于 cheerio.each() 方法造成的吗(我假设它是同步的)?

const rp = require('request-promise');
const fs = require('fs');
const cheerio = require('cheerio');

async function parseAutodeskSpec(contentsHtmlFile) {
const topics = [];
const contentsPage = cheerio.load(fs.readFileSync(contentsHtmlFile).toString());
const contentsSelector = '.content_htmlbody table td div div#divtreed0e338374 nobr .toc_entry a.treeitem';

contentsPage(contentsSelector).each(async (idx, topicsAnchor) => {
const topicsHtml = await rp(topicsAnchor.attribs['href']);
console.log("topicsHtml.length: ", topicsHtml.length);
});

console.log("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");

return topics;
}

最佳答案

这样试试:

let hrefs = contentsPage(contentsSelector).map((idx, topicsAnchor) => {
return topicsAnchor.attribs['href']
}).get()


let topicsHtml
for(href of hrefs){
topicsHtml = await rp(href);
console.log("topicsHtml.length: ", topicsHtml.length);
}

现在 await 在 map 之外,或者每个都不像你想象的那样工作。

关于javascript - 运行前异步不等待功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53175806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com