use*_*766 6 javascript asynchronous promise
我正在寻找一个JavaScript函数,它将以下数据结构作为参数:
let data = [
{value: 'a'},
{delay: [
{value: 'b'},
{delay: [
{value: 'c'}
]}
]},
{value: 'd'}
];
Run Code Online (Sandbox Code Playgroud)
如您所见,数据结构是一个对象数组.每个对象都包含一个属性.这些属性中的每一个都是带有字符串的"值"或带有与其值相同类型的另一个数组的"延迟".
该函数应该向控制台打印每个"值"字符串,并在以相同方式处理延迟数组之前为每个"延迟"暂停两秒钟.该函数应支持任何深度的延迟嵌套.上面显示的两级深度延迟嵌套只是一个例子.
对于上面的示例数据,控制台的功能输出应该是(按此顺序,只有这个顺序):
a
b
c
d
Run Code Online (Sandbox Code Playgroud)
如何编写代码来实现此功能?
您可以使用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);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |