Javascript 使用promises时无法在angularJS中正确同步流
我用AngularJS编写了这段代码。我无法同步此操作。我想在达到if条件之前解析myData值。但我的代码流仍在继续,并且不会进入“IF”状态,因为此时myData是一个promise函数Javascript 使用promises时无法在angularJS中正确同步流,javascript,angularjs,promise,angular-promise,Javascript,Angularjs,Promise,Angular Promise,我用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
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.defer,但我认为我做错了什么
让我知道这里缺少什么。承诺不会神奇地使异步代码同步。他们仍然是。在您的例子中,
myData
永远不会是布尔值,因为它是异步获取的-但您可以得到它的承诺。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...
});
}
您需要将if条件放入
然后
回调中。如果您试图解决多个承诺,请检查标题中的拼写错误:porpery->property