gpt4 book ai didi

javascript - Lodash:是否可以将 map 与异步功能一起使用?

转载 作者:可可西里 更新时间:2023-11-01 01:46:32 25 4
gpt4 key购买 nike

考虑这段代码

const response  = await fetch('<my url>');
const responseJson = await response.json();
responseJson = _.sortBy(responseJson, "number");

responseJson[0] = await addEnabledProperty(responseJson[0]);

什么 addEnabledProperty做的是扩展对象添加一个 enabled属性(property),但这并不重要。函数本身运行良好

async function addEnabledProperty (channel){

const channelId = channel.id;
const stored_status = await AsyncStorage.getItem(`ChannelIsEnabled:${channelId}`);
let boolean_status = false;
if (stored_status == null) {
boolean_status = true;
} else {
boolean_status = (stored_status == 'true');
}

return _.extend({}, channel, { enabled: boolean_status });
}

有没有办法使用_.map (或另一个系统),循环遍历整个 responseJson 数组以使用 addEnabledProperty针对每个元素?

我试过:

responseJson = _.map(responseJson,  function(channel) {
return addEnabledProperty(channell);
});

但它没有使用异步,所以它卡住了应用程序。

我试过:

responseJson = _.map(responseJson,  function(channel) {
return await addEnabledProperty(chanell);
});

但是我遇到了一个 js 错误(关于 return await addEnabledProperty(chanell); 行)

await is a reserved word

然后尝试

responseJson = _.map(responseJson, async function(channel) {
return await addEnabledProperty(channell);
});

但是我得到了一系列的 Promises...我不明白为什么...

还有什么!??

编辑:我理解您对我没有指定 addEnabledProperty() 的提示返回 Promise ,但是,真的,我不知道。事实上,我写了“我得到了一系列 Promises...但我不明白为什么

最佳答案

要并行处理您的响应 json,您可以使用 Promise.all:

const responseJson = await response.json();
responseJson = _.sortBy(responseJson, "number");

let result = await Promise.all(_.map(responseJson, async (json) =>
await addEnabledProperty(json))
);

由于 addEnabledProperty 方法是异步的,下面的方法也应该有效(根据@CRice):

let result = await Promise.all(_.map(responseJson, addEnabledProperty));

关于javascript - Lodash:是否可以将 map 与异步功能一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47065444/

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