function art(dataToArt){
var figlet = require('figlet');
var result;
figlet(dataToArt, function(err, data) {
if (err) {
console.log('Something went wrong...');
console.dir(err);
return;
}
var result = data;
});
return result;
}
test = art('Hello World');
console.log(test);运行此命令会产生“未定义”。如何访问function figlet对function figlet外部定义的变量result所做的更改。
发布于 2016-03-07 01:24:58
这是异步代码。它不能返回。它必须有回调,并在作业完成后响应。
var figlet = require('figlet');
function art(dataToArt, callback)
{
figlet(dataToArt, function(err, data) {
if (err) {
console.log('Something went wrong...');
console.dir(err);
return callback('');
}
callback(data);
});
}
art('Hello World', function (data){
console.log(data);
// also You can do operations here.
// for example can save to db or send to somewhere.
});发布于 2016-03-07 03:25:27
我个人喜欢使用promises
var figlet = require('figlet');
function art(dataToArt) {
return new Promise(function(fullfil, reject) {
figlet(dataToArt, function(err, data) {
if (err) {
reject(err);
} else {
fullfil(data);
}
});
});
}
art('Hello World').then(function(result) {
console.log(result);
});https://stackoverflow.com/questions/35829759
复制相似问题