你能否向初学者解释“承诺”,“异步”和“回调”之间的区别.这些术语如何相互关联?这些是一回事吗?不同的东西?我什么时候使用哪个? Async是开始计算并提供函数或注册处理程
“回调”是指您为异步计算提供的函数,该函数将在该计算完成时调用.它被称为“回调”,因为它被异步函数调用,并且在被调用时,它将控制流返回到您可以控制的代码中.
“Promise”是一个特定的JavaScript原型和相关框架,它为以异步样式编写的代码带来一致性. Promise表示可能已完成(可能成功或未成功)的异步计算,并提供对结果进行操作或处理错误的方法,而不管异步计算的完成状态如何. Promise API还提供了用于组合多个异步计算的输出的实用程序(例如,在下一次计算之前等待一组或所有异步计算完成).
举一个没有Promise的简单例子:
var addThen = function(a, b, handler) { var result = a + b; handler(result); }; // ... addThen(2, 3, console.log); // prints 5 // ...
与Promise相当:
var add = function(a, b) { return Promise.resolve(a + b); }; // ... add(2, 3).then(console.log); // prints 5 // ...
异步代码可以使用和不使用Promise编写,但使用Promise的主要优点是一致性(例如,在参数列表中成功回调和失败回调的位置,是否支持失败回调等)和支持库可以将它们组合在一起.