gpt4 book ai didi

javascript - 有没有更好的方法在 javascript 中进行回调链接?

转载 作者:行者123 更新时间:2023-11-29 10:47:50 25 4
gpt4 key购买 nike

我写了一个回调助手,它让我可以将多个回调分组到一个函数变量中:

function chainCallbacks() {
var callbacks = arguments;
return function () {
for(var i = 0; i < callbacks.length; i++) {
if(callbacks[i] != null) {
callbacks[i].apply(null, arguments);
}
}
};
}

这行得通,但我想知道是否有任何 javascript 库提供相同的功能?甚至更好,模拟.NET“事件”模式的东西?

myEvent+=myCallback;

最佳答案

我修改了你的 chainCallbacks 函数。您可以在 JS 控制台中测试以下代码(我使用的是 Chrome - 工作正常),并检查结果。

var result = 0;

function a() {
result += 5;
console.log(result);
_next();
}

function b() {
result += 10;
console.log(result);
_next();
}

function c() {
result += 20;
console.log(result);
_next();
}

function chainCallbacks() {

var _this = this;
var _counter = 0;
var _callbacks = arguments;

var _next = function() {
_counter++;
if(_counter < _callbacks.length) {
_callbacks[_counter].apply(_this);
}
};

_this._next = _next;

return function() {
if(_callbacks.length > 0) {
_callbacks[0].apply(_this);
}
};
}

var queue = chainCallbacks(a, b, c);
queue();

想法很简单 - 只要回调函数执行完毕就调用 _next(),并且您想跳转到另一个函数。所以你可以调用 _next() 例如在一些 jQuery 动画之后,这样您将保留函数的顺序。

关于javascript - 有没有更好的方法在 javascript 中进行回调链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159706/

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