如何拦截承诺请求?
How to intercept promise request?
我正在使用 q 个 promise,我想在 promise 开始时显示微调器。目前我是这样做的:
getPromise().then(function() { spinner.hide() })
在 getPromise()
fn 中,我显示了微调器,所以 getPromise
看起来像:
function getPromise()
{
spinner.show()
}
但是有没有办法截取 q 中的 then
块,以便我可以将 spinner.show
添加到该截取中?
你想多了
var spinOnPromise = function(p) {
spinner.show()
p.finally(function() {
spinner.hide()
});
return p;
}
传入 promise,只要 promise 未决,微调器就会运行。
编辑:你可以这样做:
var spinOnPromise = function(p) {
spinner.show()
return p.finally(function() {
return spinner.hide()
});
}
如果你这样做,不同的是,如果 spinner.hide()
returns 一个承诺(称之为 p1
),从 spinOnPromise()
返回的承诺将不会解析直到 p1
被解析,但它将解析为与 p
相同的值。有关详细信息,请参阅 here。
你可以这样做,但我不明白为什么你会这么做。
我正在使用 q 个 promise,我想在 promise 开始时显示微调器。目前我是这样做的:
getPromise().then(function() { spinner.hide() })
在 getPromise()
fn 中,我显示了微调器,所以 getPromise
看起来像:
function getPromise()
{
spinner.show()
}
但是有没有办法截取 q 中的 then
块,以便我可以将 spinner.show
添加到该截取中?
你想多了
var spinOnPromise = function(p) {
spinner.show()
p.finally(function() {
spinner.hide()
});
return p;
}
传入 promise,只要 promise 未决,微调器就会运行。
编辑:你可以这样做:
var spinOnPromise = function(p) {
spinner.show()
return p.finally(function() {
return spinner.hide()
});
}
如果你这样做,不同的是,如果 spinner.hide()
returns 一个承诺(称之为 p1
),从 spinOnPromise()
返回的承诺将不会解析直到 p1
被解析,但它将解析为与 p
相同的值。有关详细信息,请参阅 here。
你可以这样做,但我不明白为什么你会这么做。