如何在javascript中将2个函数与1个函数结合起来?
我正在创建一个函数,使用javascript将数据保存到后端。现在我需要在javascript中将两个函数和一个函数结合起来。因为我想点击一个按钮就可以运行这两个功能如何在javascript中将2个函数与1个函数结合起来?,javascript,Javascript,我正在创建一个函数,使用javascript将数据保存到后端。现在我需要在javascript中将两个函数和一个函数结合起来。因为我想点击一个按钮就可以运行这两个功能 第一个功能-第一个功能是单击按钮后,图像将显示在页面中,然后传递到后端执行保存功能 功能保存\u qr(表单){ html2canvas($(“#createImg”),{ onrendered:函数(画布){ var imgsrc=canvas.toDataURL(“image/png”); 控制台日志(imgsrc); $(“
第一个功能
-第一个功能是单击按钮后,图像将显示在页面中,然后传递到后端执行保存功能
功能保存\u qr(表单){
html2canvas($(“#createImg”),{
onrendered:函数(画布){
var imgsrc=canvas.toDataURL(“image/png”);
控制台日志(imgsrc);
$(“#newimg”).attr('src',imgsrc);
$(“#img”).show();
var dataURL=canvas.toDataURL();
$.ajax({
类型:“POST”,
url:“?f=“+loc,
数据:{
imgBase64:数据URL
}
}).done(函数(o){
console.log('saved');
});
}
});
}
第二个函数
-此函数将传递到后端以执行插入表单数据函数
功能保存\u qr(表单){
var error_msg=新数组();
$(“#”+表单+”.blank”)。每个(函数(){
if($.trim($(this).val())==“”){
错误_msg.push(“The”+$(this.attr(“title”)+“不应为空。”);
}
});
var loc=getQueryVariable('loc');
var serialized=$('#'+form).serialize();
var extra='&action=save';
var form_data=序列化+额外;
如果(错误消息长度<1){
$.ajax({
键入:“POST”,
url:“?f=“+loc,
数据:表格数据,
beforeSend:function(){
show_overLay();
},
成功:功能(数据){
如果(数据){
控制台日志(数据);
隐藏覆盖(数据);
//$('#save').prop('disabled',true);
window.location=“?loc=“+loc;
}否则{
隐藏覆盖(数据);
}
}
});
}否则{
警报(错误消息加入(“\n”);
}
}
这意味着我想先执行第一个功能以显示图像,然后执行第二个功能。两个函数中使用相同位置后端的url。希望有人能指导我如何将这两个函数与1个函数结合起来。谢谢
注意:这两个功能如果分开执行,则可以工作
错误:
我是瞎了还是这么简单。将函数重命名为
save_qr1
和save_qr2
(当前函数名称相同),并在新的full_save_qr
函数中使用它们:
function full_save_qr(form) {
save_qr1(form);
save_qr2(form);
}
这些功能是同步进程。这意味着您的save_qr1将在save_qr2之前处理。如果希望两个函数之间有一个特定的时间,则需要使用类似于setTimeout
function full_save_qr(form) {
save_qr1(form);
setTimeout(() => save_qr2(form), 1000);
}
只需添加全局变量,如
var isImageShow=false
。调用像这样包装代码
var isImageShow = false;
function save_qr(form) {
if (!isImageShow) {
isImageShow = true;
// 1st function code
} else {
// 2nd function code
}
}
如果要检查
dataURL
上的条件,则将dataURL
声明为全局变量。如果(!dataURL),则将条件更新为。同时更新var dataURL=canvas.toDataURL()
todataURL=canvas.toDataURL()
因此它将全局使用声明的数据URL
var dataURL = "";
function save_qr(form) {
if (!dataURL) {
html2canvas($("#createImg"), {
onrendered: function(canvas) {
var imgsrc = canvas.toDataURL("image/png");
console.log(imgsrc);
$("#newimg").attr('src', imgsrc);
$("#img").show();
dataURL = canvas.toDataURL(); // removed var from here.
$.ajax({
type: "POST",
url: "?f=" + loc,
data: {
imgBase64: dataURL
}
}).done(function(o) {
console.log('saved');
});
}
});
} else {
// 2nd function code
}
}
只需添加全局变量,如var isImageShow=false
。如果(!GetPropertyValue){GetPropertyValue=true;//1st function code}或者{//2nd function code}
谢谢@Karan回答我的问题,请像那样调用包装代码。你能在下面写下来吗?如果正确的话,我可以给你打分。谢谢你的回答。如果你喜欢,你的答案也可以保存imgBase64:dataURL,对吗?你只是在一个函数中调用你的两个函数。因此,整个机制应该仍然有效。如果您有任何问题-请随时推荐以下内容,我们将尽力解决。请编辑答案,其中使用dataURL
作为条件,并保留其值。