gpt4 book ai didi

javascript - 处理异步函数

转载 作者:行者123 更新时间:2023-11-30 12:52:18 25 4
gpt4 key购买 nike

我刚开始使用 JS 和 Node 编程,还没有习惯异步的东西。基本上,我有以下代码:

for (var i=0, len=sources.length; i<len; i++) {
processSource(sources[i], function(info) {
doesOtherStuff(sources[i], info);
});
}

它并没有真正起作用,因为 processSource 需要一段时间才能完成,函数 doesOtherStuff 被调用时参数不匹配,例如 sources[2 ]sources[0] 的处理信息。

处理这个问题的正确方法是什么?这些功能的设计是否存在固有的错误。 (processSource 和 doesOtherStuff 都是我的函数)。

最佳答案

代码的问题在于 i 不是您期望的那样。

当循环完成时,函数级变量i 的值为sources.length。所以当 doesOtherStuff 运行时,这就是内部函数所使用的。

for (var i=0, len=sources.length; i<len; i++) {
(function(i) {
processSource(sources[i], function(info) {
doesOtherStuff(sources[i], info);
});
})(i);
}

关于javascript - 处理异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20550556/

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