函数调用另一个函数但不等待返回值?

时间:2015-05-05 17:26:26

标签: javascript jquery

所以我有一个基本上调用另一个函数的javascript函数。这个其他函数返回true或false,然后我有一个if语句但是函数不等待返回值它只是不停地翻阅代码。解决这个问题的解决方案是什么?

所以我的第一个功能是:

confirmmation = show_confirmation("<some text>", "245px");
    if (confirmmation) {
       return true;
    }
    else {
       return false;
    }

那个电话:

function show_confirmation(message, height) {
        var contentPosition = $('.content').position();
        var contentHeight = $('.content').height();
        var bottomPosition = contentPosition.top + contentHeight;
        $('.confirmBox').css("top", (bottomPosition - ($('.confirmBox').outerHeight()+100)) + "px");
        $('.confirmBox').css("left", (($('.content').width() - $('.confirmBox').outerWidth()) / 2) + $('.content').scrollLeft() + "px");
        $('.confirmBox').css("height", height);
        $('.confirmBox .confirmationMessage').html(message)
        $('.confirmBox').css("display", "block");

        $('#yesButton').click(function (e) {
            e.preventDefault();
            $('.confirmBox').hide("slow");
            return true;
        });
        $('#noButton').click(function (e) {
            e.preventDefault();
            $('.confirmBox').hide("slow");       
            return false;
        });
    }

3 个答案:

答案 0 :(得分:3)

解决方案是使用回调。您无法在浏览器中使用阻止功能。

让show_confirmation函数接受一个使用返回值调用的函数参数。

答案 1 :(得分:3)

您应该使用回调:

function show_confirmation(message, height, callback) {
    // ...

    $('#yesButton').click(function (e) {
        e.preventDefault();
        $('.confirmBox').hide("slow");
        callback(true);
    });
    $('#noButton').click(function (e) {
        e.preventDefault();
        $('.confirmBox').hide("slow");
        callback(false);
    });
}

show_confirmation("<some text>", "245px", function(confirmation) {
    if (confirmation) {
        // yes button clicked
    }
    else {
        // no button clicked
    }
});

答案 2 :(得分:1)

function show_confirmation(message, height, callback) {
        var contentPosition = $('.content').position();
        var contentHeight = $('.content').height();
        var bottomPosition = contentPosition.top + contentHeight;
        $('.confirmBox').css("top", (bottomPosition - ($('.confirmBox').outerHeight()+100)) + "px");
        $('.confirmBox').css("left", (($('.content').width() - $('.confirmBox').outerWidth()) / 2) + $('.content').scrollLeft() + "px");
        $('.confirmBox').css("height", height);
        $('.confirmBox .confirmationMessage').html(message)
        $('.confirmBox').css("display", "block");

        $('#yesButton').click(function (e) {
            e.preventDefault();
            $('.confirmBox').hide("slow");
            callback(true);
        });
        $('#noButton').click(function (e) {
            e.preventDefault();
            $('.confirmBox').hide("slow");  
            callback(false);     
        });
    }

function someAnotherFunction(value){
    if(value){
         //yesButton
    }else{
         //noButton
    }
}

用法:

show_confirmation("message", 0, someAnotherFunction);