我应该在自定义函数中使用callback模式吗? 节点js

例如我有一个函数A,必须返回一些值

function A(callback){ //some computation var fakeData = 20; callback(null,fakeData) } function B(err,data){ if(!err){ console.log(data); } } A(B); 

所以据我所知,只有节点js中的I / O操作是asynchronous运行的,所以如果我正确的是这个区别

  function A(){ var fakeData = 20; return fakeData; } function B(data){ console.log(data); } var data = A(); B(data); 

我的意思是他们两个会同步运行的权利?

如果你正在谈论这两个函数,那么是的,这两个是相同的,但这不是callback的使用,因为当你有一个过程返回一段时间后的结果,或者将来像数据库调用或restAPI调用或文件读/写操作,我们不知道他们什么时候返回结果。

callback模式对于许多types的问题是有用的:

  1. 当你的函数使用asynchronous操作,并希望能够在asynchronous操作完成时通知调用者,并且可能将最终结果传递给调用者。

  2. 当你的函数想要调用者提供一些可用于计算结果的函数时,就像可以传递给array.sort(callback)

您通常不会使用callback模式来传递同步操作的结果,因为这会使代码比直接从函数中直接返回结果更复杂。 因此,如果您在A()中的所有操作都是同步的,那么您的第二个代码选项将更容易编码和使用。