javascript - 使用回调创建用于删除/确认的可重用函数
问题描述
我不确定以前是否有人问过这个问题,我确实检查过,但我不确定如何实际搜索它。
我想创建一个可重用的删除功能,根据用户决定进行确认。我创建了这个简单的函数来编辑带有对象值的元素数据,但我无法运行在第一个函数中设置的回调。
或者甚至有可能根据用户的决定以某种方式从该函数返回一个布尔值?
这是我想要实现的逻辑示例
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/
也许我应该为此使用承诺?我还没有时间学习承诺,但也许我应该?
解决方案
当您定义回调函数时,您正在请求将在函数体中使用的参数(在您的情况下是 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);
}
});
});
推荐阅读
- tensorflow - TensorFlow 训练:CPU Xeon 或 2 GPU gtx750。谁更快?
- maven - 使用 mvn 运行 jmeter 测试时在控制台中显示汇总报告信息
- mongodb - 无法从另一个 docker 连接到 mongo docker
- mongodb - Mongodb:“错误:执行查询时出错:失败:尝试在主机'127.0.0.1:53492'上运行命令'find'时出现网络错误”
- sql - Microsoft SQL 存储过程
- mysql - Mysql 和 Wordpress Kubernetes 安装给出名称解析错误
- graphql - 如何在 graphql-playground 中更改 websocket url(订阅)
- rest - DOMINO REST API 获取集合排序列
- python-3.x - 结合 tkinter 和看门狗
- python - 如果对象包含符号 Python Pandas,则替换第一个字符