我正在使用JavaScript API将大量记录(2000-3000)导入Dropbox数据存储区。我试图阻止UI直到导入完成,因为如果用户导航离开页面,导入将终止部分过程。
这是我的代码,其中包含对所发生事件的评论:
//This shows a "loading" spinner
showLoader('Standby','Importing logbook...');
//Fire import function
writeToDropbox('aircraft', data.aircraft);
function writeToDropbox(tableName, dataArray){
//Write up to 100 items per delta
for(var i = 0; i < dataArray.length && i < 100; i++) {
//Write to Dropbox
datastore.getTable(tableName).insert(dataArray[i]);
}
if(i < dataArray.length) {
//More to write
window.setTimeout(function(){
//After a tick, continue from where we left off
writeToDropbox(tableName, dataArray.slice(i));
}, 1);
}
//Check progress
if(dataArray.length == 0){
//Writing complete... show the confirmation modal
hideLoader();
$('#modal-done').show(); //(!) This happens before all the records are inserted
}
}
我遇到的问题是JavaScript全部执行,我的应用程序显示确认模式,但在后台数据存储区API仍在插入记录。
如何可靠地确定API何时插入记录?
答案 0 :(得分:1)
请参阅https://www.dropbox.com/developers/blog/61/checking-the-datastore-sync-status-in-javascript。
检查datastore.getSyncStatus().uploading
。