大家好希望你们都做得很好,
这是我的代码,带有名称的函数和回调将名称作为回调函数以返回名称和 console.log
如果我
function doSomething(name,callback) {
callback(name);
}
function foo(n) {
return n;
}
var val = doSomething("TEST",foo);
console.log(val);
我没有定义。
如果我
function doSomething(name,callback) {
callback(name);
}
function foo(n) {
console.log(n);
}
var val = doSomething("TEST",foo);
工作正常并且 console.log 测试名称。
那么为什么退货不起作用?
谢谢
原文由 Obeid 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的
doSomething()
函数不返回任何内容,这意味着使用它的赋值将为undefined
。但是,这并不是真正的问题所在。潜在的问题是您似乎在这里混合了两种不同的数据处理模式:如果您正在编写纯同步代码,则使用返回函数(它会立即返回一些值)。如果您需要异步代码,则使用回调(它将“最终”做某事)。混合这两种模式会导致问题和挫败感:
任何一个:
val
执行的任何操作。情况1:
案例二:
如果你想使用案例 2,你真的想看看现代 Javascript 中的“Promises”和 async/await,它们是基于“一旦有事情要回调就回调”的想法得到高度改进的方法”。
2021 年编辑:自最初撰写此答案以来的第三种选择是使用 异步/等待 模式,这是 Promises 的语法糖。
案例三: