如何让Node.js函数异步?为何createResponse偶发返回键值对数量不足
问题原因
- 代码的核心问题是随机数重复覆盖了对象的已有键:你每次循环生成0~100之间的整数作为
response的键,6次循环过程中很容易出现重复的随机值,后一次的赋值会直接覆盖前一次同键名的内容,最终导致对象的键值对总数小于6。 - 你之前把
separateResult()改为异步实现的操作完全不对症,自然解决不了问题。
修复方案
你可以修改随机数生成逻辑,确保每次生成的键不会重复,示例代码如下:
function createResponse(rows) { const response = {} for (let i = 0; i < 6; i++) { let random // 循环生成随机数,直到生成的键不存在于当前response中 do { random = Math.floor(Math.random() * 101) } while (Object.prototype.hasOwnProperty.call(response, random)) response[random] = rows[i].user_name } return response }
补充说明
如果你的业务场景允许键的取值范围更大,也可以调整随机数的生成区间(比如扩大到0~1000),进一步降低重复概率,不过上面的去重检查逻辑是最稳妥的,能100%保证返回6个键值对。
内容的提问来源于stack exchange,提问作者struggler
相关产品推荐
相关产品推荐

