Функция возврата JavaScript в другой функции - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть javascript, похожий на этот

function one (var1, var2){
    var var3= var1+var2;
    return var3;
}

function two( var4, var5){
    var var6=var4*var5;
    return var6;
}

function three(var7, var8){
    var9=var7/var8;
    return var9;
}

var first = one(2, 4);

var second= two(first, 8);

var third= three(second, 9);

Я хочу, чтобы все функции были отдельными, потому что каждый из них похож на модуль, который будет обрабатывать различные операции.Поэтому я не хочу использовать обратный вызов, я пытался

$.ajax(first = one(2,4))
.then({second=two(first, 8)})
.then(three(second,9))

Я также пытался это

$.ajax()
.then(function(first=one(2,4){
    return first;
})
.then(function(second=two(first,4){
    return second;
})

Я также пытался это

$.ajax({
    first:one(2,4),
    second:two(first,4),
    third:three(second,9),
})
.then(function(first=one(2,4){
    return first;
})
.then(function(second=two(first,4){
    return second;
})

этоможет показаться смешным, но я даже попробовал

var third= three(two(one(2, 4), 8), 9);

среди многих других.Все они показывают, что операция выполняется с первой функцией и другими функциями, но она не дает мне результата от предыдущей функции


Это обновление вышеупомянутого.Модификация

Я не хочу использовать обещание в других функциях, так как некоторые другие функции также будут вызывать эти функции, и они не будут ожидать обещание, но допустимые данные

function modifyData(details){
    for(var x=0 ;x<array.length;x++){
        //this would do a massive loop which would
        //return a json string that would be 
    }
 }


 function tableFunction(url, tableNameVar){
    //json fields
 var details=[];
 details[0] = 'name'; 
 details[1] = 'sex'; 
 details[2] = 'eye_color'; 
 details[3] = 'height'; 
 details[4] = 'body_built'; 
        var jsonData='';
        var main = "";
    $(document).ready(function(){ 
        $('#'+tableNameVar+'').dataTable({
            destroy: true,
            data: JSON.parse(extraFunctionProcess(modifyData(details),details)),
            columns:[
                     {title: "Name", data:"name"} ,
                     {title: "Gender", data:"sex"} ,
                     {title: "Eye color", data:"eye_color"} ,
                     {title: "Height", data:"height"} ,
                     {title: "Body built", data:"body_built"} 
            ]
        });
    });
}

Я хочу обработать данные и поместить их в таблицу.ExtraFunctionProcess работает, если данные передаются прямо в поле данных, не помещая их в функцию modifyData.вместо указанного выше это

data: JSON.parse(extraFunctionProcess(fullData,details))

Это сработало, но из-за внесенной мной модификации возникла ошибка в консоли браузера, которая не определена внутри extraFunctionProcess.

Я только что сократил код, чтобы выложить его в сеть.

1 Ответ

0 голосов
/ 09 октября 2018

Я действительно нашел решение проблемы.С помощью функции modifyData возникла проблема.Возврат был внутри другой функции.Intead of следующее

function modifyData(details){
    for(var x=0 ;x<array.length;x++){
        //this would do a massive loop which would
        //return a json string that would be inside a function
    }
 }


function modifyData(details){
    for(var x=0 ;x<array.length;x++){
         return functionName(callback to be done);
        //this would do a massive loop which would
        //return a json string that would be 
    }
 }
...