gpt4 book ai didi

javascript - 在JS数组中存储单个大索引是错误的吗?

转载 作者:行者123 更新时间:2023-12-02 16:42:44 24 4
gpt4 key购买 nike

我有一个上传处理程序连接到我的 js 脚本。

(这个上传处理程序是用 C++ 编写的,因此我无法传递 js 对象)

此上传处理程序开始上传并立即返回 UID(基于当前时间戳(以毫秒为单位)。如下所示:

var transferUid = fileTransfers.addFileTransfer(sourcePath,destination);

我想为此添加一个回调函数。当传输完成时。这个js函数完成后会自动执行:

filetransfersfinished(uid){...}

这样做是否合理:

var finishFunctions = [];
finishfunctions [transferUid] = function(){/*callbacks*/}

transferUid 可能类似于 184548178452 ...

并在调用自动​​函数时调用它:

filetransfersfinished(uid){  finishfunctions[uid]();  }

或者您能想到更好的解决方案吗?

最佳答案

回答问题

在 Chrome 中使用堆分析工具,为少量内容提供一个巨大的数组似乎不会导致问题或堆分配峰值。

已确认here为“稀疏数组与完整数组”,并通过 this jsperf 进行确认.

实质上:稀疏数组很慢,但预计不会比对象属性慢。

无论如何,我建议您使用对象,因为它更直观:

回答您的具体情况

最好的方法是使用一个对象(javascript相当于“关联数组”),如评论中指出的。有很多方法可以做到这一点,但为了尽可能保留您使用的语法,我会这样做:

var finishFunctions = {};
finishfunctions [transferUid.toString()] = function(){/*callbacks*/}

然后是你的回调:

filetransfersfinished(uid){  finishfunctions[uid.toString()]();  }

注意:使用此方法,您可以为 uid 使用任何方便的格式,而不仅仅是数字。如果它对您有任何值(value)。

关于javascript - 在JS数组中存储单个大索引是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27376166/

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