1
回调和Promises之间真的有根本的区别吗?
在执行单线程异步编程时,我熟悉两种主要技术。最常见的一种是使用回调。这意味着将传递给异步操作的函数的回调函数作为参数。当异步操作完成时,将调用回调。 jQuery这样设计一些典型的代码: $.get('userDetails', {'name': 'joe'}, function(data) { $('#userAge').text(data.age); }); 但是,当我们要在前一个完成后一个接一个地进行其他异步调用时,这种类型的代码可能会变得混乱且高度嵌套。 因此,第二种方法是使用Promises。Promise是一个对象,它表示可能不存在的值。您可以在其上设置回调,当准备读取值时将调用该回调。 Promises和传统的回调方法之间的区别在于,异步方法现在可以同步返回Promise对象,客户端将在其上设置回调。例如,在AngularJS中使用Promises的类似代码: $http.get('userDetails', {'name': 'joe'}) .then(function(response) { $('#userAge').text(response.age); }); 所以我的问题是:实际上有真正的区别吗?区别似乎纯粹是语法上的。 是否有更深层次的理由使用一种技术而不是另一种技术?