我有一個問題,即至少有一個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謝謝。我不知道這件事。我以爲因爲我的問題是特定於圖書館的,所以在標題中縮小它是有意義的。 –