обратный вызов JavaScript возвращает неопределенный - PullRequest
0 голосов
/ 24 апреля 2018

Мне нужно вызвать функцию из командной строки, которая доступна внутри js.Здесь я вызываю метод как node test.js callfunction из командной строки.Но он возвращается undefined.Вот мой код,

module.exports = {
    callfunction: function (param) {
        function1(param, function (error, result) {
            console.log(result);
        });
    }
};    
var function1 = function (param, callback) {
    callback(null, true);
};    
require('make-runnable/custom')({
    printOutputFrame: false
});

Вот вывод кода выше

true
undefined

Как я могу решить эту проблему?пожалуйста, кто-то посоветуете мне.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Если вы используете jquery, есть хорошая функция для работы с асинхронными задачами, она называется Отложено

function doAsyncTask() {
    var d = $.Deferred();

    $.get(url, params, function(data) {
        //process data
        d.resolve();
    }).fail(function(e) {
        console.error("get request failed", e);
        d.reject();
    });

    return d;
}

function onAsyncTaskFinished() {
    console.log("async task is finished");
}

function onAsyncTaskFail() {
    console.error("async task is failed");
}

doAsyncTask().then(onAsyncTaskFinished, onAsyncTaskFail);

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

function doAsyncTask(callbackFn) {
    setTimeout(function() {
        callbackFn();
    },1000);
}

function onAsyncTaskFinished() {
    console.log("async task is finished");
}

doAsyncTask(onAsyncTaskFinished);
0 голосов
/ 24 апреля 2018

Ваш код правильный, он печатает значение "true", как и ожидалось. Функция Javascript всегда возвращает «undefined» в случае, если оператор return не определен.

Образец с оператором возврата:

module.exports = {
    callfunction: function (param) {
        return function1(param, function (error, result) {
            return result;
        });
    }
};    
var function1 = function (param, callback) {
    return callback(null, true);
};

module.exports.callfunction(123);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...