我有两个这样的功能
EditorDuplicate
正如您在我的第一个函数中看到的那样,我仅调用GetnextItemCode
函数,但是在第二个函数中,我在执行完第一个函数后调用了另一个函数。
但是要在EditorDuplicate
函数之后加载$("body").on("click", "#btnTransactionEdit", function (e) {
TransactionId = $(this).closest("div").find('#SearchItemID').text();
EditorDuplicate(TransactionId);
});
$("body").on("click", "#btnDuplicate", function (e) {
TransactionId = $(this).closest("div").find('#SearchItemID').text();
EditorDuplicate(TransactionId, function () {
GetnextItemCode();
});
//EditorDuplicate(TransactionId);
//GetnextItemCode();
})
函数,我添加了回调函数。现在看起来像这样:
function EditorDuplicate(TransactionId, callback) {
// other codes
callback();
}
EditorDuplicate函数:
#btnDuplicate
现在单击#btnEdit
效果很好,但是单击GetnextItemCode
时出现错误
未捕获的TypeError:回调不是函数
那是为什么?以及我该如何纠正?
注意:
并且功能仍然没有一个接一个地运行,EditorDuplicate
在另一个完成之前执行。 GetnextItemCode
函数有几行代码,而// edit button
$("body").on("click", "#btnEdit", function () {
var TransactionId = $('#SearchItemID').text();
EditorDuplicate(TransactionId);
});
// duplicate button
$("body").on("click", "#btnDuplicate", function () {
var TransactionId = $('#SearchItemID').text();
EditorDuplicate(TransactionId, function () {
GetnextItemCode();
});
});
function EditorDuplicate(TransactionId, callback) {
alert("EditorDuplicate");
// other codes
callback();
}
function GetnextItemCode(){
alert("GetnextItemCode")
}
函数只有几行。
请查看摘要中的错误
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="btnEdit" value="edit"/>
<input type="button" id="btnDuplicate" value="duplicate"/>
<br/><br/>
<span>Search Id :</span>
<span id="SearchItemID">2</span>
app:transformDexArchiveWithExternalLibsDexMergerForDebug
答案 0 :(得分:1)
在函数中,首先需要检查callback
是否实际上是一个函数:
function EditorDuplicate(TransactionId, callback) {
// your code
if (typeof callback === 'function') {
callback();
}
}
这是因为当未在此调用中传递时,callback
变为undefined
:
EditorDuplicate(TransactionId);
尝试致电undefined
会引发错误。
答案 1 :(得分:0)
函数EditorDuplicate(TransactionId,callback){ //您的代码
if (callback) {
callback();
}
}