javascript - 在嵌套的 for 循环中进行 fetch 调用
问题描述
我目前正在将我的本地函数转换为 lambda 函数,并且遇到了一些困难。在以前的方法中,我得到了一个 url 片段数组,我必须以编程方式将这些片段串到前缀以获取数据。
从逻辑上讲,我认为最好的方法是做一个嵌套的 for 循环。浏览一系列前缀,添加 url 片段并执行 fetch 调用。
它在本地运行良好,但 lambda 会引发错误。
function getVariantData(data, cb) {
for (var i = 0; i < chapters.length; i++) {
let source = chapters[i];
// chapters = url prefix
data.forEach(async element => {
let res = await fetch(chapters[i] + element);
//element = url fragment
let body = await res.text();
createVariantsFile(element, source, body, cb);
});
}
}
这段代码运行良好,但我了解到 lambda 对 forEach 和 async/await 的要求更严格,所以我将代码更改为此,我一直在处理一堆问题。我还没有写完console.log,因为……好吧,我还没有克服错误。
async function getVariantData(data, cb) {
for (var i = 0; i < chapters.length; i++) {
let source = chapters[i];
const promises = data.map((datum, index) => fetch(source+datum))
const chapterData = await Promise.all(promises)
console.log(chapterData)
// await data.map(async element => {
// return await (chapters[i] + element);
// createVariantsFile(element, source, body, cb);
// });
}
}
解决方案
推荐阅读
- node.js - 如何访问从 xml nodejs api 转换的 json 中的数据
- json - VBA-JSON 在 API 调用中仅返回 32,767 个字符
- meteor - 升级后,为什么我的 Meteor 应用程序不再启动?
- python - Django-storages 将 FileField 和 ImageField 上传到 Dropbox
- php - 如何使用循环填充输入类型?
- activerecord - Simple_form 问题
- mysql - 如何在mysql中从倒数第二个逗号到最后一个逗号提取文本?
- pipe - 在 Talend 中将 csv 文件转换为管道分隔文件
- ruby-on-rails - 如何在视图中一起显示来自不同条目的多个属性,它们具有相同的名称,例如“嵌套”属性?
- scala - 自定义版本的 fileUpload 指令未能实现