gpt4 book ai didi

javascript - 异步迭代对象键/值

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:02 25 4
gpt4 key购买 nike

鉴于此代码:

var o = {
k1: 'v1',
k2: 'v2',
k3: 'v3'
};

var stupidf = function(k, v, callback) {
setTimeout(function() {
console.log(k + "=" + v);
callback();
}, 2000};
};

产生输出的最佳方式是什么:

// after 2 seconds
stdout: k1=v1
// after 4 seconds
stdout: k2=v2
// after 6 seconds
stdout: k3=v3

使用数组,您可以创建一个副本并使用回调push()它,但我真的不知道如何使用对象执行此操作。

最佳答案

您假设 o 中条目的迭代有保证的顺序; it does not 。假设您不关心将它们取出的顺序:

function asyncIterate(o,callback,timeout){
var kv=[], i=0;
for (var k in o) if (o.hasOwnProperty(k)) kv.push([k,o[k]);
var iterator = function(){
callback(kv[i][0],kv[i][1]);
if (++i < kv.length) setTimeout(iterator,timeout);
}
setTimeout(iterator,timeout);
}
asyncIterate(o,function(k,v){
console.log(k+'='+v);
},2000);

JavaScript没有像Lua的next()这样的东西函数允许您查找给定键/值对之后的下一个键/值对。

如果您确实关心条目的顺序,那么您需要将原始键/值对存储在数组中,而不是对象中。

关于javascript - 异步迭代对象键/值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8647244/

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