Jquery - Using promise API
Jquery - Using promise API
我试图创建一个简单的进度条。当进度条上的动画完成时,我需要获得一个事件/执行操作(100%宽度由绿色填充)。
HTML-
<button>Go</button>
<p>Waiting</p>
<div id="bar" class="progress-bar">
<div class="progress-bar-fill"></div>
</div>
CSS-
.progress-bar {
background-color: #EEE;
height: 10px;
overflow: hidden;
width:100%;
}
.progress-bar-fill {
background-color: green;
height: 100%;
transition: width 5s ease 0s;
width: 0;
}
JS-
$("button").on("click", function () {
$("p").append(" --> Started");
$('#bar .progress-bar-fill').css('width', '100%');
$('#bar .progress-bar-fill').promise().done(function () {
$("p").append(" --> Finished");
});
});
链接-http://jsfiddle.net/v2unc/
WRT代码,"完成"指示应在5秒钟后出现。但只要点击按钮,它就会出现。
"http://api.jquery.com/promise/"效果很好。或者我看错了API?
将ontransitionend
事件用于CSS3动画:
演示
$("button").on("click", function () {
$("p").append(" --> Started");
$('#bar .progress-bar-fill').css('width', '100%').on('transitionend', function () {
$("p").append(" --> Finished");
});
});
您看到的是错误的API。.promise
返回一个promise,该promise在元素上的挂起操作队列完成时实现。默认情况下,这意味着动画队列。jQuery没有为您的进度条设置动画,因此动画队列始终为空,promise会立即解析。
由于进度条是通过CSS转换来设置动画的,所以你可以做的最简单的事情就是设置一个与转换持续时间同步的计时器,例如
$("button").on("click", function () {
$("p").append(" --> Started");
$('#bar .progress-bar-fill').css('width', '100%');
setTimeout(5000, function () {
$("p").append(" --> Finished");
});
});
当然,这是相当低的技术,需要你重复过渡持续时间(糟糕)。与其这样,不如选择transitionEnd
事件。
相关文章:
- 如何更改bigquery API中的计费层选项
- 使用promise和mongoose对文档进行排序
- Amazon S3 REST API大小不正确
- 客户端服务器REST API captcha实现
- 使用Facebook live API创建实时视频对象时的隐私设置
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- Jquery - Using promise API
- Angular promise从JSON API返回不正确的数据
- 如何从节点中的api promise返回对象
- 使用 Javascript Promise 调用多个 WEB API 调用
- JavaScript Promise API 是否比它需要的更复杂
- Promise deferred ajax api jQuery
- 使用api调用在循环中实现promise
- 组合多个API调用和处理后从工厂方法返回promise
- 量角器测试中的request-promise + co API触发器
- 链接2个异步调用(promise API)以串行运行
- Promise API -结合2个异步调用的结果
- 如何以同步方式制作Promise API
- 使用Request -promise限制Node.js API的请求