pen*_*hil 8 javascript jquery promise
我一直在使用bootbox.js库,它以异步方式运行,但我需要以同步方式使用它(例如,在提交表单之前设置"确认"窗口).
我不想用来e.preventDefault()取消事件,我想推迟操作直到用户响应模态.目前该库不支持它,但我很好奇是否可以使用promises模拟同步行为?
这是一个非常基本的例子,使用链接(而不是表单提交按钮,这是我的最终目标):http: //plnkr.co/edit/5NovsuKTeQ7y6SKNTwWp?p = preview
不,这根本不是 Promise 的作用。Promise 在这里无法帮助你。
链接的默认操作是导航到另一个页面(或转到此页面中的某个部分)。如果您想阻止链接执行其操作 - 您必须使用处理程序e.preventDefault()或从onclick处理程序返回 false(最好是前者)。
preventDefault正是您所需要的,并且听起来完全符合您的目标。
confirm有效吗?是的,确实如此,没有人真正知道为什么 - 阻塞是confirm promptand的原始行为alert,并且从未为了向后兼容性而改变。它完全阻塞,并且在启动时什么也不会发生——这与该语言和其他 API 不同,并且非常不典型。- 例如:
setTimeout(function(){
alert("World");
},100);
alert("Hello");
Run Code Online (Sandbox Code Playgroud)
在这里,"World"即使只有 100 毫秒的超时时间,在您关闭“Hello”框之前也不会收到警报。alerts 和prompts 只是“冻结”JavaScript 执行。它们被认为是糟糕的用户体验,并且除了非常具体的问题之外通常是一个糟糕的选择。
Promise 是对延迟计算的抽象,它们允许您创建看起来像同步的异步代码,这很棒,但它们并不神奇,并且不会将代码变成真正的同步。所有 Promise 所做的就是使编写异步代码几乎与编写同步代码一样简单。
| 归档时间: |
|
| 查看次数: |
2472 次 |
| 最近记录: |