gpt4 book ai didi

javascript - 回调数组,找位置

转载 作者:行者123 更新时间:2023-11-30 19:43:41 25 4
gpt4 key购买 nike

如何跟踪回调在数组中的位置以便触发下一个回调?

我的要求是这需要支持 ES5。

给定一个假设的回调数组,我需要找出它在哪个索引处。问题是相同的回调可能会重复。

使用索引号不是最佳选择,因为回调可能会以不同的速度被多次调用。

我本质上是在寻找一种方法来跟踪一条路径,而不管回调何时被调用以及调用了多少次。


示例:

let callbacks = [CB1, CB2, CB3, CB1, CB3, CB2]


如果 CB3 被调用,我希望它迭代到列表中的下一个而不是向后(即遵循插入路径)。

示例:

CB3 -> CB1 -> CB3 -> CB2


需要注意的是CB3只负责调用CB1,而CB1负责调用列表中的下一个.

更好的例子:

CB3 -> CB1
CB1 -> CB3 (2)
CB3 (2) -> CB2


如果 CB3 是列表中的第二个,它不应遵循与列表中第一个 CB3 相同的路径。

示例:

CB3 (2) -> CB2


另一位先生评论说这让他想起了 Express 中间件,我说过它确实非常相似。

最佳答案

你可以拿iteration protocols通过实现 Symbol.iteratorArray#[@@iterator]() ,并对其进行迭代,直到没有更多元素可用。

var CB1 = () => console.log('CB1'),
CB2 = () => console.log('CB2'),
CB3 = () => console.log('CB3'),
callbacks = [CB1, CB2, CB3, CB1, CB3, CB2],
gen = callbacks[Symbol.iterator]();
interval = setInterval(function () {
var g = gen.next();
if (g.done) {
clearInterval(interval);
return;
}
g.value();
}, 1000);

关于javascript - 回调数组,找位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55144922/

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