angularjs – 使用$timeout时承诺链接
发布时间:2020-12-17 09:29:06 所属栏目:安全 来源:网络整理
导读:我正在努力了解承诺API和链接,特别是当$timeoutis与.then()一起使用的时机.从以下我预期的是,由于$timeout返回一个承诺,.then()将不会被调用,直到它已经解决. 但是ABAB一直是ABBA. 在执行.then()之前,如何使用promise API来确保长时间运行的调用(或使用$time
我正在努力了解承诺API和链接,特别是当$timeoutis与.then()一起使用的时机.从以下我预期的是,由于$timeout返回一个承诺,.then()将不会被调用,直到它已经解决.
但是ABAB一直是ABBA. 在执行.then()之前,如何使用promise API来确保长时间运行的调用(或使用$timeout的延迟调用)实际完成? 码 angular .module('app',[]) .controller('ThenCtrl',ThenCtrl); function ThenCtrl($timeout,$q) { var vm = this; vm.items = []; $q.when(pushA()).then(pushB()); $timeout(pushA,5000).then(pushB()); function pushA() { vm.items.push('A'); } function pushB() { vm.items.push('B'); } } 标记 <div ng-app="app"> <div ng-controller="ThenCtrl as vm"> {{vm.items}} </div> </div> 我已经设置了一个小提琴:https://jsfiddle.net/kan3c61t/
不要调用.then方法中的函数.
$q.when(pushA()).then(pushB); //$q.when(pushA()).then(pushB()); $timeout(pushA,5000).then(pushB); //$timeout(pushA,5000).then(pushB()); 而是将函数作为参数传递给.then方法. $q服务将保留稍后调用的功能. $q服务的工作方式是将.then方法的参数存储为稍后调用的函数.在这种情况下,$q服务正在存储由pushB()返回的值,其副作用是立即将B推送到数组上. DEMO on JSFiddle (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何用angularjs中的2个相同控制器制作原型?
- 很漂亮的bootstrap ace静态页面后台管理系统模板
- angularjs – 在Angular JS服务中更新’这个’内部的$Promi
- WebService之Axis2系列教程(二)用POJO实现零配置的WebServi
- scala – 构成独立特征
- ScalaFx:具有一流功能的事件处理程序
- scala – 将Map [String,Double]转换为java.util.Map [Stri
- angularjs – angular / jasmine:错误:没有要刷新的延迟任
- 笔记 yum 单用户 救援模式 目录 查看(猿课初讲2.1-2.5)
- angularjs – $location.path不工作