如何触发一个承诺,然后触发第二个承诺,$q
How to trigger a promise and then a second one with $q?
我在方法中使用$q
来获取对象数组。我还有一种叫做getItems
的方法,它利用了这个承诺(all
)。
我在底部第二次使用all
,用$scope.list
做事。代码必须包装在all().then(function() { ... }
内,因此它仅在$scope.list
准备就绪时才触发。
var all = function() { return $q.all([service.getAllItems()]) }
var getItems = function() {
all().then(function(value) {
$scope.list = JSON.parse(value)
}, function(reason) {
$scope.result = reason
})
}
getItems()
all().then(function() {
// do stuff with $scope.list
}
这行得通...几乎。有时第一个all
首先完成,有时第二个完成。所以有时$scope.list
有对象,有时它是空的。
如何创建一个仅在all
获取对象数组时触发的新承诺?
你可以这样做:
var all = function() { return $q.all([service.getAllItems()]) }
var getItems = function() {
return all().then(function(value) {
$scope.list = JSON.parse(value)
}, function(reason) {
$scope.result = reason
});
}
getItems().then(function() {
// do stuff with $scope.list
}
如果你在一个函数中返回一个承诺,你可以将一个.then
链接到它,所以现在你的getItems
将从all()
返回承诺,一旦实现,你的代码将继续
相关文章:
- 下拉选择可自动更改第二个下拉选择
- 为什么不'在JQuery中找到第二个css选择器的工作
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- CORS-重定向到第二个GET正在接收的页面
- 正则表达式与数字中的第二个点匹配
- 如何在react js中移动第二个组件
- 使用Javascript,如何显示<tr>在另一<tr>悬停时,隐藏第二个<tr>
- 关闭第二个事件源上的第一个事件源's onopen方法
- D3从嵌套的JSON中绘制第二个圆环图
- IE11中的第二个调用取消了第一个Fetch API调用
- 第一个字第一个字符第二个字第二个字符,一直到数组结束
- 角度指令:指向第二个元素
- 时间选择器:如何通过更改第一个值来更改第二个值
- 承诺,如果第一个失败,则返回第二个承诺结果
- React Native Fetch:第二个承诺挂起
- Angular 在第一个表单验证/承诺后提交第二个表单
- AngularJS:承诺链不延迟超过第二个函数
- 如何触发一个承诺,然后触发第二个承诺,$q
- 第二个承诺决心不解雇
- 将响应传递给$q承诺的第二个then