欢迎光临,了解微信小程序开发,就上易用通!

微信小程序中使用Promise进行异步流程处理

发布:2018-01-25 14:47浏览: 来源:网络 作者:tianshu

我们知道,JavaScript是单进程执行的,同步操作会对程序的执行进行阻塞处理。比如在浏览器页面程序中,如果一段同步的代码需要执行很长时间(比如一个很大的循环操作),则页面会产生卡死的现象。
所以,在JavaScript中,提供了一些异步特性,为程序提供了性能和体验上的益处,比如可以将代码放到setTimeout()中执行;或者在网页中,我们使用Ajax的方式向服务器端做异步数据请求。这些异步的代码不会阻塞当前的界面主进程,界面还是可以灵活的进行操作,等到异步代码执行完成,再做相应的处理。
一段典型的异步代码类似这样:
  1. function asyncFunc(callback) {
  2.   setTimeout(function () {
  3.     //在这里写你的逻辑代码
  4.     //...
  5.  
  6.     //逻辑代码结束,执行一个回调函数
  7.     callback();
  8.   }, 5000);
  9. }
或者:
  1. function asyncFunc(callback) {
  2.   setTimeout(function () {
  3.     //在这里写你的逻辑代码
  4.     //...
  5.  
  6.     //逻辑代码结束,执行一个回调函数
  7.     callback();
  8.   }, 5000);
  9. }

然后我们这样调用:
  1. asyncFunc(function () {
  2.   console.log("asyncFunc() run complete");
  3. });
  4.  
  5. getAccountInfo(function (data) {
  6.   console.log("get account info successfully:", data);
  7. }, function () {
  8.   console.error("get account info failed");
  9. });
这是一种使用了回调函数来控制代码执行流程的方式。这样看起来没问题,也挺容易理解。
但是,如果我们一段代码中,异步操作太多,又要保证这些异步操作是有顺序的执行,那我们的代码就看起来非常糟糕,就像这样:
 
  1. asyncFunc(function () {
  2.   console.log("asyncFunc() run complete");
  3. });
  4.  
  5. getAccountInfo(function (data) {
  6.   console.log("get account info successfully:", data);
  7. }, function () {
  8.   console.error("get account info failed");
  9. });





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。