我需要从js中可用的命令提示符调用该函数。在这里,我从命令promt调用方法为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
我该如何解决这个问题?请有人给我建议。
答案 0 :(得分:1)
您的代码是正确的,它按预期打印值“true”。如果未定义return语句,则Javascript函数allways返回“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);
答案 1 :(得分:0)
如果您正在使用jquery,那么处理异步任务有很好的功能,它被称为Deferred
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);