我正在使用 q 承诺,并且我想在承诺开始时向旋转器显示。目前我正在这样做:
getPromise().then(function() { spinner.hide() })
Run Code Online (Sandbox Code Playgroud)
在getPromise()fn 中,我显示了微调器,所以getPromise看起来像:
function getPromise()
{
spinner.show()
}
Run Code Online (Sandbox Code Playgroud)
但是有什么方法可以拦截thenq 中的块,以便我可以将 the 添加spinner.show到该拦截中?
你想太多了
var spinOnPromise = function(p) {
spinner.show()
p.finally(function() {
spinner.hide()
});
return p;
}
Run Code Online (Sandbox Code Playgroud)
传入 Promise,只要 Promise 处于待处理状态,旋转器就会继续运行。
编辑:你可以这样做:
var spinOnPromise = function(p) {
spinner.show()
return p.finally(function() {
return spinner.hide()
});
}
Run Code Online (Sandbox Code Playgroud)
如果你这样做,区别在于,如果spinner.hide()返回一个承诺(称为p1),则返回的承诺spinOnPromise()将不会被解析,直到p1被解析,但它将解析为与 相同的值p。详细信息请参见此处。
你可以这样做,但我不明白为什么你会这样做。
| 归档时间: |
|
| 查看次数: |
2235 次 |
| 最近记录: |