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


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到错误 !上面是一个简单的表述,比较容易理解。如果不够具体,可以看下廖雪峰的博客,里面蛮多教程的。


Comments 3


!thumbup
恭喜你!您的这篇文章入选 @justyy 今日 (2019-10-23) 榜单 【优秀的文章】, 回复本条评论24小时内领赏,点赞本评论将支持 @dailychina 并增加将来您的奖赏。
@justyy 是CN区的见证人,请支持他,给他投票,或者设置justyy为见证人代理。感谢!@justyy的主要贡献:https://steemyy.com

Congratulations! This post has been selected by @justyy as today's (2019-10-23) 【Good Posts】, Steem On! Reply to this message in 24 hours to get rewards. Upvote this comment to support the @dailychina and increase your future rewards! ^_^

SteemIt 工具、API接口、机器人和教程
SteemIt Tools, Bots, APIs and Tutorial



If you believe what I am doing, please consider a spare vote voting me here, thank you very much indeed.

@justyy - the author of https://SteemYY.com and I have been a Steem Witness for more than a year now.

23.10.2019 08:01
12

promise 在js里面很好用,以前用callback,越用越混乱

23.10.2019 20:31
0

SteemJs中几乎都是Promise吧,好像还有个async,也刚学

24.10.2019 09:28
1