差异回调、承诺和事件JavaScript/React Native<-&燃气轮机;Java/Android

差异回调、承诺和事件JavaScript/React Native<-&燃气轮机;Java/Android,javascript,java,android,react-native,Javascript,Java,Android,React Native,我正在读关于React Native和Android的文章。 文件中区分了 我很难理解他们三人之间的区别。主要区别是什么?什么时候使用什么 回调是一个传递给另一个函数的函数,当某个异步操作完成时,该函数将调用该函数: somethingAsync(function callback(result) { /*...*/ }); 您将经常看到这种模式,因为ilelse依赖于回调。但是,如果您有很多回调,那么代码就很难读取和维护,尤其是在处理循环时。为此,引入了承诺,它包装了一个回调函数,

我正在读关于React Native和Android的文章。 文件中区分了


我很难理解他们三人之间的区别。主要区别是什么?什么时候使用什么

回调是一个传递给另一个函数的函数,当某个异步操作完成时,该函数将调用该函数:

somethingAsync(function callback(result) { /*...*/ });
您将经常看到这种模式,因为ilelse依赖于回调。但是,如果您有很多回调,那么代码就很难读取和维护,尤其是在处理循环时。为此,引入了承诺,它包装了一个回调函数,并允许将回调附加到承诺。这允许一些很好的链接:

 const promise = new Promise(somethingAsync);
 promise.then(function result() { /*...*/ });
请注意,承诺只解析一次,而回调可以多次调用

事件实际上与承诺无关,它们允许您将回调附加到发生事件时将被调用的对象,例如,单击按钮:

 button.onclick = function(event) { /*...*/ }

如何多次调用回调?若您尝试从返回多个回调的本机部件调用方法,您将得到一个错误。正如文档所述:“本机模块应该只调用其回调一次。但是,它可以存储回调并在以后调用它。”。所以这就像承诺一样,它会解决一次,但以后你可以再打电话给它。我说得对吗?这意味着,作为本机和react之间的通信,承诺是为了更干净的代码?@m.wojcik nope,您将一个特殊回调的文档带到了某个地方,并将其应用于所有回调<代码>[1,2,3]。例如,forEach(cb)将调用回调
cb
三次。