gpt4 book ai didi

javascript - 这个 javascript 循环仍然是异步的吗?

转载 作者:行者123 更新时间:2023-12-03 08:50:06 25 4
gpt4 key购买 nike

我写了这个循环,我认为它是异步的。

有人可以确认一下吗?

这是 3 个函数,它们会重复调用彼此,直到迭代完毕。当它完成时,它会调用父函数中的回调。

function compareRightsLoop(rights, request, callback) {
loopInit(request.length, 0, 0, loopIncrement);

var loopInit = function(max, inc, boolIncr, initLoopIncrement) {
if (rights.indexOf(request[inc]) === -1);
else
boolIncr++;
initLoopIncrement(max, inc, boolIncr, this, loopTerminate);
};

var loopIncrement = function(max, inc, boolIncr, initLoopInit, initLoopTerminate) {
inc++;
if (max === inc)
initLoopTerminate(max, inc, boolIncr);
else
initLoopInit(max, inc, boolIncr);
};

var loopTerminate = function(max, inc, boolIncr) {
if (max == boolIncr)
callback(true);
else
callback(false);
};
}

最佳答案

您的循环是同步的。

您创建的所有函数都是同步的,并且没有任何东西可以使您的函数变为异步。

事实上,您向它们传递回调函数并没有说明什么,因为它们不会在后台执行某些操作,等待它返回或类似的事情。

您的代码甚至无法工作,因为您在声明变量之前尝试使用它们。

而且,如果我们假设您在尝试使用变量之前已经定义了它们,即使在那里,您也不会有异步函数。如果您调试代码,您将看到它进入每个函数内部并执行完整的循环,然后再转到代码的下一行。

这将是异步的,例如,如果您使用 setTimeout 进行调用,如下所示:

var loopInit = function(max, inc, boolIncr, initLoopIncrement) {
setTimeout(function() {
if (rights.indexOf(request[inc]) === -1);
else
boolIncr++;
initLoopIncrement(max, inc, boolIncr, this, loopTerminate);
}, 0);
};

关于javascript - 这个 javascript 循环仍然是异步的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32717300/

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