После того, как мне пришлось изменить бит синтаксиса обратного вызова, чтобы учесть ограничения Firefox, я сталкиваюсь с некоторыми странными проблемами.jQuery Promise Callback
Markup + Выполнение кода
function List_Add() {
SP.SOD.executeFunc('SP.js', 'SP.ClientContext', function() {
var listTitle = 'Quote';
var propertiesToAdd = [];
propertiesToAdd.push({
ID: "Q_ID",
newval: 1,
});
addListItems(listTitle, propertiesToAdd)
.done(function(items) {
//Do Heaps of Stuff
})
.fail(function(error) {
console.log(error.get_message());
});
});
}
И функция, которая вызывается для выполнения этой
function addListItems(listTitle, propertiesToAdd) {
var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var list = web.get_lists().getByTitle(listTitle);
var listItemCreationInfo = new SP.ListItemCreationInformation();
var newItem = list.addItem(listItemCreationInfo);
propertiesToAdd.forEach(function(entry) {
newItem.set_item(entry.ID, entry.newval);
});
newItem.update();
var d = $.Deferred();
ctx.executeQueryAsync(function() {
d.resolve(true);
return d.promise();
},
function(sender, args) {
d.reject(args);
return d.promise();
});
}
возвращения d.promise в то время как обычно вне функций не вызывает проблемы синхронизации с выполнением асинхронной.
Ошибка я получаю после выполнения этого кода генерируется на отметку до + выполнение
Uncaught TypeError: Не удается прочитать свойство «сделано» неопределенных
Значения добавления в списки правильно, так основная часть работает, .done не возвращается, хотя, следовательно, не позволяет выполнять последующий код.
'addListItems' ничего не возвращает. –
Вы вызываете 'addListItems (listTitle, propertiesToAdd) .done(). Fail()' и эта функция ничего не возвращает – DelightedD0D