我有一个问题,即至少有一个then()函数没有在等待结束之前的那个函数。从第二个查询中添加结果以从第一个查询中回答
代码被缩短,但大致是这样的:
var objCheck = {};
var id = thisClick.attr('id');
APP.db.checkInfo.get(id).then(function (resultDetail) {
objCheck.details = resultDetail;
}).then(function() {
var checkPoints = APP.db.checkRooms.where('check_id').equals(id);
checkPoints.toArray(function(dataArray) {
dataArray.measures = [];
objCheck.checkpoints = dataArray;
});
}).then(function() {
var arrayLength = objCheck.checkpoints.length;
for (var i = 0; i < arrayLength; i++) {
var roomId = objCheck.checkpoints[i].room_id;
var measure = APP.db.measures.where('room_id').equals(roomId);
measure.toArray(function(dataArray) {
objCheck.checkpoints[i].measures = dataArray;
});
}
}).then(function() {
$.ajax(
// Here I send then objCheck to the server
).done(...);
}).catch(function(error) {
alert ("Error upload: " + error);
});
如果我打印出来的objCheck在年底控制台我看到措施填充但在阿贾克斯()调用它不是一起发送。所以它看起来像最后一个()在第二个最后一个完成之前运行。
这似乎是从我身边的一个误解。有人能告诉我我的逻辑有什么问题吗?
[请不要把问题标题标签(https://开头stackoverflow.com/help/tagging) – Liam
@Liam谢谢。我不知道这件事。我以为因为我的问题是特定于图书馆的,所以在标题中缩小它是有意义的。 –