ES6 和 Node 中的同步和异步回调函数

Synchronous and Asynchronous callback functions in ES6 and Node

我是 ES6 的新手并且 Node.js

我想了解回调函数在同步环境和异步环境下是如何工作的。

我尝试 运行 在 Node 中执行以下操作:

function func1() { 
    console.log('hello'); 
}

func1(function(){ 
    console.log('world');
}); 

根据我对异步回调的理解,func1应该先执行,当func1执行完成后,它会回调其参数列表中的函数。

所以在这种情况下:

console.log('world') 

应该排在第二位,但我只得到一个输出:hello

我错过了什么吗?有人可以用清晰的例子向我解释回调是如何工作的吗?在同步环境中是否相同?

因此,当您 运行 func1(function(){...}) 时,您实际上是将未命名或 'anonymous' 函数作为参数传递给 func1。但是,要用作 回调,您需要显式执行它。

function func1(fn) { 
    console.log('hello'); 
    fn();
}

func1(function(){ 
    console.log('world');
}); 

在其他节点库中,开发人员很可能处理您为其函数提供的回调,这就是它们工作的原因。

希望对您有所帮助!

您应该首先检查 func1() 函数:

function func1() { 
    console.log('hello'); 
}

最重要的是要认识到它采用零参数。结果是传递给它的内容无关紧要。例如:

func1("world")
func1(1)
func1(false)
func1(function (){console.log('world)}

都做完全相同的事情,因为 func1() 忽略作为参数传入的所有内容。

如果您想传递回调,则需要不忽略其参数的函数,因为它们需要对该回调做一些事情。所以接受回调的函数应该有一个更像这样的签名:

function func1(some_argument){
   // do something with argument
}

如果您期望该参数是一个函数,那么自然要做的就是像这样执行它:

function func1(some_function){
    // call that function
    some_function()
}

所以对于你的例子,你最终会得到:

function func1(callback) { 
    console.log('hello');
    callback() 
}

func1(function(){ 
    console.log('world');
}); 

这将导致两个 console.log()

此外,因为它在标题中,所以这里没有任何异步操作。