获取错误回调不是一种情况下的函数

时间:2018-07-26 05:32:43

标签: jquery callback

我有两个这样的功能

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

2 个答案:

答案 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();
}

}