在使用promise时无法在angularJS中正确同步流
Not able to sync the flow properly in angularJS while using promises
我用AngularJS编写了这段代码。我无法同步此。我想在达到if条件之前解析myData值。但我的代码流仍在继续,它没有进入"IF"条件,因为在这一点上myData是一个promise函数。
function() {
var dfd = $q.defer();
var myData = false;
var myData = restResource.get(itemId).queryOptions(options).promise().then(function(dataItem1) {
return restResource.oneAction(dataItem1.elements).then(function(dataItem2) {
var i;
if (dataItem2.items.length > 0) {
dfd.resolve(true);
return dfd.promise;
}
});
});
if(myData === true) {
dfd.resolve(item.attributes);
return dfd.promise;
}
//Another Resource call... code continues...
}
我也试着用$q.dedefer,但我觉得我做错了什么。
让我知道这里缺了什么。
Promises不会神奇地使异步代码同步。它们仍然是异步的,并且使用回调。在您的情况下,myData
永远不会是布尔值,因为它是异步获取的,但您可以获得它的promise。if语句必须进入回调。
function() {
return restResource.get(itemId).queryOptions(options).promise()
.then(function(dataItem1) {
return restResource.oneAction(dataItem1.elements);
}) // here we can unnest!
.then(function(dataItem2) {
var myData;
if (dataItem2.items.length > 0) {
myData = true
// item.attributes;
}
//Another Resource call... code continues...
});
}
相关文章:
- angularjs文本区域-如何使其与angularjs下拉列表中的选定值保持同步
- AngularJS:在使用嵌套的JQuery Sortables时保持Dom和Model同步
- $resource 'get' 函数如何在 AngularJS 中同步工作
- 使用AngularJS,如何在视图和控制器同步特定更改后触发代码执行
- AngularJS.ng类与$scope中的变量不同步
- AngularJs:在内部调用$http或$resource时,让方法同步返回
- 如何确保angularjs app.js中的同步加载
- 模型绑定在 AngularJS 中不同步
- $http.获取同步 AngularJS
- AngularJS将实时收集与REST同步,并获得实时更新
- 使用LoDash和AngularJS进行实时同步更新
- AngularJS中的同步$resource
- AngularJs:$http同步调用
- 使用AngularJS同步两个数组中的数据
- angularJS:将重新排序列表与数据结构同步
- 同步与服务链接的两个AngularJS控制器
- 在使用promise时无法在angularJS中正确同步流
- 在AngularJS中与服务器同步时,保留表单上的浏览器状态
- AngularJS-视图中需要同步调用的重要数据
- 无法将AngularJS服务与控制器同步(angular.copy)