【发布时间】:2013-01-27 23:23:39
【问题描述】:
我只是在尝试一个简单的回调来让代码按顺序执行,而不是异步执行。这不起作用:
function fn1(string, func){
console.log("hello");
func();
};
function fn2(){
console.log("world");
}
fn1("meaninglessString", fn2());
它实际上将“world”然后“hello”打印到控制台然后崩溃。但这确实:
function fn1(string, func){
console.log("hello");
func();
};
fn1("meaninglessString", function(){
console.log("world");
});
我是否必须始终在对fn1 的调用中直接编写回调函数代码,或者有没有办法引用已经编写的函数?另外,如果我只想让一个功能在另一个功能完成后发生,这是在 Node.js 中执行此操作的最佳方式吗?
【问题讨论】:
-
在您的第一个示例中从 fn2 中删除
()。您正在调用该函数,而不是传递它。 -
在您的第一个示例中,在
fn1方法调用中将fn2()替换为fn2。fn2()将评估,记录“世界”,然后将返回undefined作为fn1的回调传递 -
fn1是异步的吗?如果您传递给它的函数是同步的,则您不必使用回调。您可以在调用第一个函数后调用第二个函数。
标签: javascript node.js