例如我有一个函数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操作是异步运行的,所以如果我对此只是这个差异那么
function A(){
var fakeData = 20;
return fakeData;
}
function B(data){
console.log(data);
}
var data = A();
B(data);
我的意思是他们两个会同步运行吗?
答案 0 :(得分:1)
回调模式对于许多类型的问题都很有用:
当您的函数使用异步操作并且您希望能够在异步操作完成时通知调用者并且可能将最终结果传递给调用者。
当你的函数希望调用者提供一些可用于计算结果的函数时,就像可以传递给array.sort(callback)
的回调一样。
通常不会使用回调模式来传递同步操作的结果,因为这只会使代码比直接从函数返回结果更复杂。因此,如果A()
中的所有操作都是同步的,那么您的第二个代码选项将更易于编码和使用。
答案 1 :(得分:0)
如果你在谈论这两个功能,那么这两个是相同的 但这不是回调的使用,因为当你有一个进程在一段时间后或将来返回结果时会使用回调,例如数据库调用或rest api调用或文件读/写操作我们不确定他们何时返回结果。