一个简单的Promise / 网络研习社#44

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@lemooljiang·
0.000 HBD
一个简单的Promise / 网络研习社#44
![promise.jpg](https://cdn.steemitimages.com/DQmV74T5fQsenxZonns4zEpcJNPrqJGTi3CFHmRziDEbv8N/promise.jpg)

Promise ,和日常生活中的常识一样,都是承诺在未来做某件事!在生活中我们一天要安排做很多事,会排一个计划表,哪些事做完了再去做另一件事,但是所有的事情我都做好了安排,一定会在某个时间去做,这就是Promise!

和我们生活中类似的,程度要有计划地连续完成很多事,这种做事的方法在程序中称为异步。与之相对的同步,就是一件件做事情,没有计划。比如快递员派发快递,他在发完一个人后再发另一个人!这种方法肯定很糟糕,现实中没人会这么干。有经验的快递员肯定有更好的办法,比如他会同时通知所有人来取快递,谁先来谁就先取,快递很快就会发完,这种做事的方法就是异步。计算机程序也是采用类似异步的方法来执行事务。

在JavaScript中Promise 就是一个好的异步的方法。它会做好一个时间表,先把事情安排好,一件事做完了再做另一件事,这样的办事效率很高。所以,JavaScript可以看到大量的Promise 方法。在SteemJs中几乎都是Promise ,比如获取热门文章的方法:
```
steem.api.getDiscussionsByHot(query, function(err, result) {
  console.log(err, result);
});
```
方法成功了会得到结果,失败了会得到错误。不过,它做了封装,不大能看得到过程。

来学习一个简单的Promise ,入个门,自己也能写写。
```
let p = new Promise((resolve, reject) => {
  resolve()   //成功的调用
  //reject(err)  失败的调用
})
p.then(res => {
  alert("2019,hello world!")
})
p.catch(err => {
  alert("big error!")
})
```
Promise一创建就会立即执行,读入resolve, reject这两个函数。当函数成功,则执行.then内的方法,否则catch到错误 !上面是一个简单的表述,比较容易理解。如果不够具体,可以看下廖雪峰的博客,里面蛮多教程的。
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,