gpt4 book ai didi

q.js 自动传播错误(捕获异步抛出的错误)?

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

我想知道是否有任何方法可以自动将错误从一个 promise 传播到另一个 promise ? IE:从嵌套的 promise 中捕获抛出的错误。

例如,在下面的代码示例中,“internalWorker”嵌套的promise函数需要
.fail(function (error) {
return deferred.reject(error);
});
为了传播错误。如果不包含此行,则将错误抛出到顶部。 (崩溃的应用程序)

是否可以自动传播错误,以便我不需要将 .fail() 函数添加到我所有的嵌套 promise 中?

``

function top(input) {
var deferred = q.defer();

internalWorker(input).then(function (value) {
logger.inspectDebug("top success", value);
}).fail(function (error) {
return deferred.reject(error);
});

return deferred.promise;
}

function internalWorker(input) {
var deferred = q.defer();

q.delay(100).then(function () {
throw new Error("internal worker async error");
}).fail(function (error) {
return deferred.reject(error);
});

return deferred.promise;
}

top("hello").then(function (value) {
logger.inspectDebug("outside success", value);
}).fail(function (error) {
logger.inspectDebug("outside fail", error);
}).done();

``

最佳答案

如果您正在使用 https://github.com/kriskowal/q ,这将按照您的意图进行:

function top(input) {
return internalWorker(input).then(function (value) {
logger.inspectDebug("top success", value);
return value;
});
}

function internalWorker(input) {
return q.delay(100).then(function () {
throw new Error("internal worker async error");
return value;
});
}

top("hello").then(function (value) {
logger.inspectDebug("outside success", value);
}, function (error) {
logger.inspectDebug("outside fail", error);
}).done();

从回调中返回 promise 或值。错误隐式传播。

关于q.js 自动传播错误(捕获异步抛出的错误)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238997/

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