我正在使用q promises,我想在承诺开始时展示微调器。目前我正在这样做:
getPromise().then(function() { spinner.hide() })
在getPromise()
fn中,我正在显示微调器,所以getPromise
看起来像:
function getPromise()
{
spinner.show()
}
但是有没有办法拦截q中的then
块,以便我可以将spinner.show
添加到该拦截中?
答案 0 :(得分:4)
你过度思考了
var spinOnPromise = function(p) {
spinner.show()
p.finally(function() {
spinner.hide()
});
return p;
}
传递承诺,只要承诺未决,微调器就会继续。
编辑:您可以执行此操作:
var spinOnPromise = function(p) {
spinner.show()
return p.finally(function() {
return spinner.hide()
});
}
如果您这样做,不同之处在于,如果spinner.hide()
返回一个承诺(称之为p1
),则从spinOnPromise()
返回的承诺将不会得到解决,直到p1
已解决,但它将解析为与p
相同的值。有关详细信息,请参阅here。
你可以这样做,但我没有看到你为什么会这样做。