Я использую JayData в мобильном приложении платформы Telerik. Хорошие люди в JayData разработали этот пример того, что я хотел сделать:
http://jsfiddle.net/JayData/zLV7L/
var savefeedIfNotExists = function (feed) {
//create jQuery promise
console.log("create deferred for " + feed.FeedID)
var def = new $.Deferred();
//async thread
pnrDB.PNRFeeds.filter('it.FeedId == ' + feed.FeedID).count(function (count) {
console.log("Add Feed - " + feed.FeedName);
if (count == 0) {
var f = new PNRFeed({
FeedId: feed.FeedID,
FeedName: feed.FeedName,
ImageName: feed.ImageName,
FeedActive: feed.IsActive,
OrderNumber: parseInt(feed.OrderNumber) + 1
})
pnrDB.PNRFeeds.add(f);
console.log("Resolve for - " + feed.FeedName);
//promise.resolve() indicates that all async operations have finished
//we add the ADD/SKIP debug info to the promise
def.resolve("ADD");
console.log("Resolved - " + feed.FeedName);
} else {
//console.log('feed id not 0 - ' + f.FeedId);
def.resolve("SKIP");
}
});
//return promise in order to wait for the async result of local database query
return def.promise();
};
Я добавил в этот код, но когда я запустил его, также используя свой модуль Kendo.js для JayData (отличный от kendo.js от кендо), он, кажется, прерывает script, когда создается первое обещание в функции цикла. Это происходит только в первый раз, когда запускается script - если вы должны обновиться, чтобы выполнить перезагрузку, он запускается правильно, и первый элемент встает.
На втором загрузке он работает отлично, без вызова своего модуля JayData для Kendo:
Итак, хотя кажется, что он собирается добавить первый элемент (ID 19), этот элемент никогда не добавляется в базу данных. Однако при повторной загрузке одного и того же точного script он помечается как добавление снова и не прерывается, поэтому он, наконец, попадает в базу данных.
У кого-нибудь есть мысли или вещи, чтобы попробовать?