在 javascript 中链接具有延迟的方法
Chaining methods with delays in javascript
我试图使这段代码更有效率。
(function() {
sc = angular.element('tbody').scope(); sc.draft.resetRoster(); sc.$apply();
setTimeout(function() {
sc.draft.rosterAdd({id: "12921", salary: 10600, position: "P"});sc.draft.rosterAdd({id: "12123", salary: 2900, position: "C"});sc.draft.rosterAdd({id: "5435", salary: 3800, position: "1B"});sc.draft.rosterAdd({id: "12562", salary: 2400, position: "2B"});sc.draft.rosterAdd({id: "38321", salary: 3100, position: "3B"});sc.draft.rosterAdd({id: "6319", salary: 2400, position: "SS"});sc.draft.rosterAdd({id: "5204", salary: 3200, position: "OF"});sc.draft.rosterAdd({id: "5222", salary: 2500, position: "OF"});sc.draft.rosterAdd({id: "12462", salary: 2600, position: "OF"});
}, 3000);
setTimeout(function() {
document.querySelector('#enterButton').click();
}, 6000);
})();
我对 Angular 并不完全熟悉(实际上一点也不熟悉(。我正在尝试创建一个与 Angular 交互的客户端脚本。这里总共有 5 个语句,我试图将其压缩为尽可能少的代码。在 3,000 毫秒后触发第一个setTimeout
之前,我需要运行以下命令:sc = angular.element('tbody').scope(); sc.draft.resetRoster(); sc.$apply();
3,000 毫秒后,第一个setTimeout
运行。大约 6,000 毫秒(假设第一个setTimeout
和第二个setTimeout
之间大约有 ~3,000 毫秒的差距(我需要执行第二个setTimeout
。
有没有更好的方法来组合这个功能?更少的代码?更好地排序我如何处理setTimeout
?
而不是setTimeout
使用角度服务$timeout
其功能类似,但返回一个将在指定时间经过后解析的promise
,并且还调用 $apply
。所以在你的情况下:
$timeout(function () { ... }, 3000).then(function () {
//after the first timeout we set another one and return its promise
$timeout(function () { ... }, 3000);
});
通过这种方式,您可以摆脱心算,只需设置上次超时后要等待的时间,而无需嵌套超时函数。
相关文章:
- 如何将一个方法延迟到另一个方法首先完成,javascript
- 带有alanning的Flowrouter:角色-延迟在'userIsInRole'方法
- 如何删除jQuery.haverage()方法中的延迟
- 使用Facebook's EventEmitter是一种让延迟侦听器接收已经发出的事件的方法
- 如何使用addClass和延迟来执行这个.each()方法
- Express+PassportJs:为什么我们需要在passport策略中延迟process.nextTick()方法
- 是否有任何方法可以像处理jQuery中附加到XHR延迟对象的done方法处理程序一样处理websocket onmess
- 按顺序调用javascript代码的替代方法,其间有延迟
- 在 Javascript 中调用多个延迟的最有效方法是什么?
- 在 JavaScript 中延迟一个又一个函数的最佳方法
- 如何延迟对 javascript 对象的任何方法的所有调用,直到对象初始化
- 如何在 motools 中使用元素方法变形或补间延迟或设置杜累
- 有什么方法可以在我的 JavaScript 中引入延迟
- 在jQuery的每次迭代之间应用延迟's.each()方法
- animate方法函数执行意外延迟
- 延迟多次调用函数的最快方法
- Javascript:同步等待/延迟方法
- 使用带有延迟的触发方法
- 不可变JS延迟Seq链式方法
- 如何在ajax中使用延迟方法来加速从php脚本加载数据