jQuery Promise Callback
jQuery Promise Callback
在不得不更改我的回调语法以适应Firefox限制之后,我遇到了一些奇怪的问题。
标记 + 执行代码
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 虽然通常在函数之外,但会导致异步执行的计时问题。
运行此代码后收到的错误被抛出标记+执行
未捕获的类型错误:无法读取未定义的属性"完成">
这些值正确地添加到列表中,因此批量工作,.done 未返回,因此不允许执行后续代码。
你的return d.promise();
需要进入外部函数,而不是内部回调。从内部异步执行的回调返回的任何值都不会影响外部函数的返回值。
function addListItems(listTitle, propertiesToAdd) {
// ...
var d = $.Deferred();
ctx.executeQueryAsync(function() {
d.resolve(true);
},
function(sender, args) {
d.reject(args);
}
);
return d.promise();
}
相关文章:
- 使用promise和mongoose对文档进行排序
- 测试Angular Service解决错误回调中的promise
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- 节点协同与生成器和Promise并行流量控制
- 根据是否解析了 Promise 从函数返回值
- 将一个方法转换为promise:Nodejs
- 函数在promise被解析后被调用,但Jasmine未通过测试.为什么?
- 骨干's Router.execute(callback,args,name)方法获取未定义的名称
- js promise没有正确关闭
- Angularjs使用“;这个“;promise内的关键字回调
- AngularJS和promise值在调用本地函数时的效果-未定义
- 在ES6 Promise中,我应该在解决/拒绝之前使用return吗
- 以同步方式获取Javascript Promise的值
- NodeJS和pg promise,捕获PostgreSQL异常
- AngularJS使用http进行promise处理
- 在promise中返回callback()和callback(
- jQuery Promise Callback
- 如何在promise或callback中运行“yield next”
- 如何使用异步代码在forEach循环上进行promise/callback
- 我能把callback转换成promise吗?