使用顺序工作的setTimeout()函数遍历JSON对象[重复]

问题描述 投票:1回答:1
由于另一个功能,我有一个保存在变量“ json_result”中的JSON对象。

我的目标是在5秒钟的超时后对每个JSON-PART(例如json_result [i])进行console.log。

我的第一次尝试看起来像这样:

for (let key in json_result) { setTimeout(() => { if(json_result.hasOwnProperty(key)) { console.log(key + " -> " + JSON.stringify(json_result[key])); }; },5000); };

即使我使用'let'关键字进行范围界定,也无法正常工作。

我的第二种方法试图将settimeout-function外包:

for (let key in json_result) { setTimeout(() => { if(json_result.hasOwnProperty(key)) { delayer(key); }; },5000); }; function delayer(i) { setTimeout(() => { console.log(i + "->" + JSON.stringify(json_result[i]));}, 5000)};

有人解释为什么这不起作用并且可以提供解决方案吗?

最诚挚的问候

javascript json settimeout
1个回答
0
投票
您可能想要这个

const json_result = { "keyA": "valueA", "keyB": "valueB", "keyC": "valueC" } const keys = Object.keys(json_result) cnt = 0; const show = () => { console.log(keys[cnt] + " -> " + JSON.stringify(json_result[keys[cnt]])); cnt++; if (cnt < keys.length) setTimeout(show, 5000); }; show();
© www.soinside.com 2019 - 2024. All rights reserved.