gpt4 book ai didi

javascript - 用于嵌套数据结构处理的递归异步 JavaScript

转载 作者:数据小太阳 更新时间:2023-10-29 05:09:19 27 4
gpt4 key购买 nike

我正在寻找一个将以下数据结构作为参数的 JavaScript 函数:

let data = [
{value: 'a'},
{delay: [
{value: 'b'},
{delay: [
{value: 'c'}
]}
]},
{value: 'd'}
];

如您所见,数据结构是一个对象数组。每个对象都包含一个属性。这些属性中的每一个都是带有字符串的“值”或带有与其值相同类型的另一个数组的“延迟”。

该函数应将每个“值”字符串打印到控制台,并在以相同方式处理延迟数组之前为每个“延迟”暂停两秒钟。该函数应支持任何深度的延迟嵌套。上面显示的两层深度延迟嵌套只是一个例子。

上述示例数据的函数输出到控制台的应该是(按此顺序,且仅按此顺序):

a
b
c
d

如何编写代码来实现这一功能?

最佳答案

您可以使用 Promises 和 async/await:

let data = [
{value: 'a'},
{delay: [
{value: 'b'},
{delay: [
{value: 'c'}
]}
]},
{value: 'd'}
];

const delay = () => new Promise( res =>
setTimeout( res, 2000) )

const recFn = async data =>{
for(let obj of data){
if(obj.value){
console.log(obj.value)
} else if(obj.delay){
await delay();
await recFn(obj.delay)
}
}
}

recFn(data);

关于javascript - 用于嵌套数据结构处理的递归异步 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46126086/

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