15分钟内做出承诺
各位朋友晚上好!
让我们简化 Promises 的使用?
特别是,当我刚开始学习编程并接触 Promises 的概念时,我看到很多在线资料和教程对 Promises 的解释非常令人困惑,所以我决定写一篇简单易懂的文章,用非常实用的方式解释它。当然,如果你需要了解“Promises 的底层原理”,那么这篇文章并不适合你。如果你需要在短时间内理解 Promises 并提出解决方案,那么这篇文章适合你。
本质上,Promise 是为了在 JavaScript 中创建更强大的异步回调函数,使代码更易于组织。要理解这个概念,请将其理解为我们在现实生活中做出的承诺。例如:
- 我保证在 15 分钟内让你理解 Promises。
为了这个承诺,我可以做两件事:
- 我可以在 15 分钟内让您理解 Promises,从而获得成功。
- 或者我可能会失败,而你在 15 分钟内不会理解 Promises。
在代码中,情况完全一样。好的,我们来看一下。
该脚本的输出是:This is in then: success
这里,我们在 Promise 函数内部有一个块,它将 1 + 1 相加。如果结果为 2,则表示我们的 Promise 成功;否则,表示我们的 Promise 被拒绝了,因为1 + 1 = 2
。如果我们改变和的值,就会被拒绝,因为我们说和的变量是 2。如果不是,则 Promise 被拒绝。
该脚本的输出是:This is in catch: failed.
现在我们来分析一下这段代码
此代码会查看您是否正在使用 Angular 或 Vue,如果其中一个为真,它会调用一个回调函数,该函数发送带有标题和消息的警报。
现在让我们将其更改为 Promise 并使此代码变得更好。
首先,我们创建一个实例化 Promise 的函数,并传入参数resolve和rejection。然后,我们编写想要在 Promise 中执行的代码。就我而言,我希望确保开发者使用的是 React 库。因此,我进行了验证,并 dispatch 了当 Promise 解析和拒绝时要执行的操作。如下所示:
之后,我编写了then函数来调用我的 Promise,并且可以在该块中执行任何我想做的事情。当该 Promise 完成时,我希望在控制台中记录一条消息,无论是解决还是拒绝。THEN 块中的代码在我的 Promise 被解决时运行,而CATCH块中的代码在我的 Promise 被拒绝时运行。
不错吧?
此外,当我们需要同时做出两个或多个 Promise 时,我们可以使用Promise.ALL来同时做出 Promise。
输出将是
或者,如果我们需要获取第一个执行的 Promise 的结果并忽略即将到来的 Promise,则使用Promise.RACE 。
输出将是
我想就是这样了!
一些参考:
- https://treinamento.nodebr.org/
- https://braziljs.org/artigos/promises-no-javascript/
- https://dev.to/khaosdoctor/entendendo-promises-de-uma-vez-por-todas-44i7
- https://dev.to/khaosdoctor/construindo-uma-promise-do-zero-4ndp
- https://imasters.com.br/javascript/futuro-das-promises-no-javascript
- https://www.youtube.com/watch?v=wZwMVbgQZps&list=PLnOICPAPShyRZd7nnbC7h8kCQwM-6K3KW&index=10&t=0s
谢谢你!
文章来源:https://dev.to/marianesantana/promises-in-15-minutes-9l7