任何人都可以帮助解决这个问题...我正在显示3月22日输入记录的页面上。我想看看第二天是否有记录,如果不是,那么我想在那之后检查记录,等等。
我遇到的问题是在发出API请求之前循环正在完成。以下是我的代码示例:
for (var d = date; d <= now; d.setDate(d.getDate() + 1)) {
if (checkForRecord(d,now)) {
break;
} else if (!checkForRecord(d, now)) {
// continue loop..
}
}
function checkForRecord(date, now){
var formatDate = moment(date).format('YYYY-MM-DD');
Record.query({_filter: {"date": formatDate}}, function(r){
if (r.data.length > 0) {
return true;
} else {
return false;
}
});
}
是否有延迟循环完成直到进行API调用?
答案 0 :(得分:0)
使用promise
将您的函数包裹在$q.when()
中,并在函数执行完毕后使用then()
解析其余代码。请记住在构造函数中引用$ q。
for (var d = date; d <= now; d.setDate(d.getDate() + 1)) {
var promise = $q.when(checkForRecord(date, now)); // creates a promise
promise.then(function(result){ // resolve the promise using then()
// succescallback
if(result){
break;
}
}, function(error){
// errorcallback
console.log(error);
});
}
function checkForRecord(date, now){
var formatDate = moment(date).format('YYYY-MM-DD');
Record.query({_filter: {"date": formatDate}}, function(r){
if (r.data.length > 0) {
return true;
} else {
return false;
}
});
}
请注意,我实际上并未实现上述代码,但它应该为您提供如何解决它的大纲。