保持按钮状态,直到在 Angular 9 中解决承诺
Holding a button state until a promise is resolved in Angular 9
在我看来,Web 应用程序的缺点是它们会给用户带来 "fake" 的感觉,即单击按钮时并不会真正给人一种正在发生某事的印象。这是因为该操作通常是 运行 异步的,并且可以多次按下按钮,除非实现了一些覆盖(有点丑陋)。
我的目标是设计一些方法来将按钮保持为 "pressed" 直到解决(或拒绝)底层异步操作,基本上让按钮组件等待操作完成。这也是大多数时候在普通桌面应用程序中发生的情况。
我们的想法是将其实现为指令或拦截 click()
事件(或像 onClick()
这样的自定义事件)的指令,如果被调用的方法 returns 是一个 promise , 然后等到 promise 被 resolve 使按钮再次可用。
<button (click)="hello()">Hello</button>
async hello(): Promise<void> {
// Do stuff...
return Promise.resolve();
}
为了让思路更清晰,通常会发生以下情况:
User action: hover click release
Button state: normal :hover :active normal
Triggers: hello() resolve()
我的目标是:
User action: hover click release
Button state: normal :hover :active -> normal
Triggers: hello() resolve()
感谢任何帮助,谢谢。
我最初创建了一个 hacky 解决方案,当函数引用注入参数时出现问题,然后我找到了一个正是我需要的示例:
希望对其他人有用。
在我看来,Web 应用程序的缺点是它们会给用户带来 "fake" 的感觉,即单击按钮时并不会真正给人一种正在发生某事的印象。这是因为该操作通常是 运行 异步的,并且可以多次按下按钮,除非实现了一些覆盖(有点丑陋)。
我的目标是设计一些方法来将按钮保持为 "pressed" 直到解决(或拒绝)底层异步操作,基本上让按钮组件等待操作完成。这也是大多数时候在普通桌面应用程序中发生的情况。
我们的想法是将其实现为指令或拦截 click()
事件(或像 onClick()
这样的自定义事件)的指令,如果被调用的方法 returns 是一个 promise , 然后等到 promise 被 resolve 使按钮再次可用。
<button (click)="hello()">Hello</button>
async hello(): Promise<void> {
// Do stuff...
return Promise.resolve();
}
为了让思路更清晰,通常会发生以下情况:
User action: hover click release
Button state: normal :hover :active normal
Triggers: hello() resolve()
我的目标是:
User action: hover click release
Button state: normal :hover :active -> normal
Triggers: hello() resolve()
感谢任何帮助,谢谢。
我最初创建了一个 hacky 解决方案,当函数引用注入参数时出现问题,然后我找到了一个正是我需要的示例:
希望对其他人有用。