gpt4 book ai didi

javascript - 如何处理 knockout 订阅中的错误

转载 作者:行者123 更新时间:2023-12-04 19:43:22 25 4
gpt4 key购买 nike

我正在使用 knockout 编写一个应用程序,我希望能够捕获我的代码中在 knockout 内部运行的任何错误,例如订阅。

目前我有一个 knockout 订阅:

var myObservable = ko.observable();
myObservable.subscribe(function (val) {
// Code here is error prone
});

我希望能够在我的整个应用程序中使用上述模式,但能够捕获订阅回调中抛出的任何错误。

我目前的解决方案是用错误处理程序包装 ko.subbscribable.fn.subscribe 函数,如下所示:

var _subscribe = ko.subscribable.fn.subscribe;
ko.subscribable.fn.subscribe = function (callback) {
if (arguments.length != 1) return _subscribe.apply(this, arguments);
else return _subscribe.apply(this, [function () {
try
{
callback.apply(this, arguments);
}
catch (err) {
// handleError is a function in my code which will handle the error for me
handleError(err);
}
}]);
};

我的问题是这种方法是否有任何隐藏的副作用,或者我是否缺少更好的方法。

最佳答案

这是一个很好的方法,基本上称为打鸭子,请参阅 Paul Irish 的精彩解释

http://www.paulirish.com/2010/duck-punching-with-jquery/

我只会更新代码来处理错误,以防更多参数被传递到订阅函数中,就像这样

var _subscribe = ko.subscribable.fn.subscribe;
ko.subscribable.fn.subscribe = function () {
try {
return _subscribe.apply(this, arguments);
}
catch (err) {
// handleError is a function in my code which will handle the error for me
handleError(err);
}
};

关于javascript - 如何处理 knockout 订阅中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21634635/

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