如何从子方法中分离父函数

How to break parent function from submethod

本文关键字:分离 函数 子方法      更新时间:2023-09-26

我有一个函数searchKeyboardCmd,它作为事件处理程序绑定到文本框。其目的是检查该文本框中的数据是否唯一。如果没有,它应该中断该处理程序的执行并显示警告窗口。如果唯一,它应该从其他文本框中获取数据并将其存储在数组中(代码片段来自行' var a=new () ')

self.searchKeyboardCmd = function (data, event) {
        if (event.keyCode == 13) { //checking if enter was pressed or other key
            foo(function (result) {
                if (result == 'false') {
                    alert("Numer seryjny nie jest unikalny");
                    return true;
                }
            });
            var a = new Eq();
            a.StorageId(self.StorageTemp());
            a.StartDate(self.StartDateTemp());
            a.DeviceSerialNumber(self.Test());
            a.DeviceId(self.DeviceTemp());
            a.Issue(self.Issue())
            a.IssueDesc(self.IssueDesc());
            a.Quantity(self.number());
            a.Project(self.Project());
            a.MeUser(self.MeUser());
            self.data.push(a);
            $('.datepicker').datepicker({ autoclose: true, todayHighlight: true/*, language: "pl"*/, format: 'dd/mm/yyyy' });
            deviceIdField.focus();
            self.Test("");
            return false;
        }
        return true;
    };

我的foo函数调用后端方法。如果唯一,它就接收为真。

function foo(callback) {
    $.ajax({
        url: "/DeviceInstance/IsUnique",
        contentType: "application/json; charset=utf-8",
        type: "POST",
        datatype: "json",
        data: JSON.stringify({ value: viewModel.Test() }),
        error: function (data) {
            alert("Dodanie  nie powiodło się " + data);
        },
        success: function (data) {
            callback(data);
        }
    });

所以我的问题是在打破我的主事件处理程序方法的执行。我试着修改这几行:

self.searchKeyboardCmd = function (data, event,callback) 

foo(function (result) {
                console.log(result);
                callback(result);
            });

我得到的唯一响应是:undefined is not a function

试试这个:

var f = foo(function (result) {
    if (result == 'false') {
        alert("Numer seryjny nie jest unikalny");
        return true;
    }
});
if(!f){
    return; // (Or return true or false)
}

如果f()返回false,则不执行函数调用下面的代码,如果返回true,则执行