我写了一个小代码片段,它打印输出但是它没有从回调中返回任何值()
你能帮助我在哪里弄错了 `
function helloworld(string,callback){
//callback(string){
if ( string == "Tim"){
callback('null',string+" "+"Little");
} else if ( string == "Jason"){
callback('null',string+"Right") ;
} else {
callback ('error : No rule is defined for '+string,string);
}
// };
}
function invoke_callback(input){
helloworld(input,
function(err,name){
if (err != 'null'){
console.log(err);
return(err);
}
console.log(name);
return(name);
}
)
}
console.log(invoke_callback("Tim"));
`
它的输出是 - 蒂姆小 未定义
我期待 - 蒂姆小 蒂姆·利特尔
答案 0 :(得分:0)
你错过了什么。最后一个console.log正在打印invoke_callback返回的内容,这没什么。这就是未定义的原因。 为了获得你想要的东西,你必须返回helloworld方法的结果。但是这种方法也没有返回任何东西。所以你需要返回回调结果。然后你会得到它。这就是它的样子:
function helloworld(string,callback){
//callback(string){
if ( string == "Tim"){
return callback('null',string+" "+"Little");
} else if ( string == "Jason"){
return callback('null',string+"Right") ;
} else {
return callback ('error : No rule is defined for '+string,string);
}
// };
}
function invoke_callback(input){
return helloworld(input,
function(err,name){
if (err != 'null'){
console.log(err);
return(err);
}
console.log(name);
return(name);
}
)
}
console.log(invoke_callback("Tim"));
答案 1 :(得分:0)
void stackTrace(int prms, int localVars){
}
void nextTrace(unsigned int *framePointer, int prms, int localVars){
}
不返回任何内容,因此输出为corect!
如果您认为invoke_callback
是return(name);
电话的返回值,那么您就错了。
invoke_callback
正在将名称返回到return(name);
函数
如果你这样做:
helloworld
然后你得到你想要的东西
而且:
...
if ( string == "Tim"){
// here is where your `return name;` ends up
var name = callback('null',string+" "+"Little");
console.log(name);
} else if ( string == "Jason"){
...
不正确,应该是
return(name);
答案 2 :(得分:0)
你在做错的是你实际上是在 helloworld 函数内部返回实际应该返回到这个函数之外和 invoke_callback 函数内部像这样的变量..
var SomeName;
function invoke_callback(input){
helloworld(input,
function(err,name){
if (err != 'null'){
console.log(err);
return(err);
}
console.log(name);
SomeName = name;
}
)
return(SomeName);
}
console.log(invoke_callback("Tim"));