我不确定是否曾经问过这个问题,我确实检查过,但不确定如何实际搜索它。
我想创建一个可重复使用的删除功能,并根据用户的决定进行确认。我创建了这个简单的函数来编辑带有对象值的元素数据,但是我无法运行在第一个函数中设置的回调。
或者也许甚至可以根据用户的决定从该函数返回布尔值吗?
这是我想要实现的逻辑示例
function run(options, cb){
if(options['success']){
cb();
}
}
var options = {success: true};
var cbarray = new Array('id', 'token');
//calling the function and setting the callback
run(options, function(cbarray){
$.ajax({
url: 'blabla',
type: 'post',
data: {id: cbarray[0], token: cbarray[1]},
success: function(resp){
console.log(resp);
}, error: function(resp){
console.log(resp);
}
});
});
有点难以解释,所以我用自己的代码创建了这个jsfiddle https://jsfiddle.net/43zrqkvm/7/
也许我应该为此真正使用诺言?我还没有时间学习诺言,但也许我应该?
答案 0 :(得分:1)
在定义回调函数时,您将请求将在函数体中使用的参数(在ajax选项中为您的情况),但在Run函数中,您不会传递它
它必须看起来像这样
function run(options,arg, cb){
if(options['success']){
cb(arg);
}
}
var options = {success: true};
var cbarray = new Array('id', 'token');
//calling the function and setting the callback
run(options,cbarray, function(arg){
$.ajax({
url: 'blabla',
type: 'post',
data: {id: arg[0], token: arg[1]},
success: function(resp){
console.log(resp);
}, error: function(resp){
console.log(resp);
}
});
});