我已经开发 JavaScript 几年了,我根本不理解关于承诺的大惊小怪。
似乎我所做的就是改变:
api(function(result){
api2(function(result2){
api3(function(result3){
// do work
});
});
});
无论如何我都可以使用像 async 这样的库,比如:
api().then(function(result){
api2().then(function(result2){
api3().then(function(result3){
// do work
});
});
});
哪个代码更多,可读性更差。我在这里没有得到任何东西,它也不是突然神奇地“平坦”。更不用说必须将事情转换为承诺。
那么,这里关于 promise 的大惊小怪是什么?
原文由 Benjamin Gruenbaum 发布,翻译遵循 CC BY-SA 4.0 许可协议
承诺不是回调。承诺代表 异步操作的未来结果。当然,按照你的方式编写它们,你得不到什么好处。但是如果你按照它们的使用方式编写它们,你可以用一种类似于同步代码的方式编写异步代码,并且更容易理解:
当然,代码不会少很多,但可读性会更高。
但这还没有结束。让我们发现真正的好处:如果您想检查任何步骤中的错误怎么办?用回调来做这件事会很糟糕,但是用 promises 是小菜一碟:
与
try { ... } catch
块几乎相同。更好的是:
甚至更好:如果这 3 个调用
api
,api2
,api3
可以同时运行(例如,如果它们是 AJA 来等待你)他们三个?没有承诺,您应该必须创建某种计数器。有了 promises,使用 ES6 符号,又是小菜一碟,而且非常简洁:希望你现在以新的眼光看待 Promises。