微信小程序利用co处理异步流程的方法教程


Posted in Javascript onMay 20, 2017

本文主要介绍的是关于微信小程序利用co处理异步流程的方法教程,分享出来供大家参考学习,需要的朋友们下面来看看详细的介绍:

co

co是一个基于ES6 Generator特性实现的【异步流程同步化】写法的工具库。

co需要使用Promise特性,所以,我们先来创建一个使用Promise来处理的异步方法:

function myAsyncFunc() {
 return new Promise(function (resolve, reject) {
 setTimeout(function () {
 console.log("myAsyncFunction done!");
 resolve({ 
 data: "Hello,World" 
 })
 }, 2000);
 });
}

然后,直接使用这个方法的话,就会如下,使用了then/catch的回调方式来处理调用结果和异常处理:

myAsyncFunc().then(function (result) {
 console.log(result.data); //Hello,World
}).catch(function (err) {
 //...
});

而如果是使用co的话,则会像这样:

co(function *() {

 try {
 var result = yield myAsyncFunc();
 console.log(result.data); //Hello,World
 } catch(e) {
 }

});

这样的写法,是不是就是我们非常熟悉的,比较符合逻辑思维习惯的同步写法了?

关于co的用法,在本文中我就不多展开了,有兴趣的朋友可以自行搜索相关资料。我今天要讲的是,如何在小程序环境下面成功的使用co。

1. 开启语言转译选项

由于要使用到ES6的generator,而又要为了兼容性,我们必须对ES6的语法进行降级转译,变成ES5。

微信小程序利用co处理异步流程的方法教程
开启语言转译选项

2. 引入generator支撑库

经过转译后的代码,需要依赖一个regeneratorRuntime,才能支持generator特性。Facebook开源的一个regenerator就是这样一个库,Github地址:https://github.com/facebook/regenerator/

你可以通过npm来下载这个regenerator库:

npm install regenerator

然后将下载文件中名为regenerator-runtime.js的文件拿出来,放到我们的小程序代码中去。

3.下载co和Promise库

接着,通过npm下载co库:

npm install co

将下载文件中名为co.js文件拿出来,放到我们的小程序代码中去。

因为需要依赖Promise,所以我们需要引入一个Promise实现库。在此我们选用一个小而兼容性好的库es6-promise。同样可以通过npm下载:

npm install es6-promise

将es6-promise.js放到我们的小程序代码中。

4.引入小程序代码中

使用前,将这些库正确的引入我们的代码:

const Promise = global.Promise = require('../../libs/es6-promise')
const regeneratorRuntime = global.regeneratorRuntime = require('../../libs/regenerator-runtime')
const co = require('../../libs/co')

好了,接下来就可以开始愉快的使用co进行编程了。

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript 鼠标滚轮事件
Apr 09 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
JS实现两表格里数据来回转移的方法
May 28 Javascript
Yarn的安装与使用详细介绍
Oct 25 Javascript
vue.js学习之递归组件
Dec 13 Javascript
js闭包用法实例详解
Dec 13 Javascript
JavaScript中三种常见的排序方法
Feb 24 Javascript
React-intl 实现多语言的示例代码
Nov 03 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
Jun 19 Javascript
详解html-webpack-plugin插件(用法总结)
Sep 12 Javascript
微信小程序webview实现长按点击识别二维码功能示例
Jan 24 Javascript
关于jQuery库冲突的完美解决办法
May 20 #jQuery
layui文件上传实现代码
May 20 #Javascript
为你的微信小程序体积瘦身详解
May 20 #Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 #jQuery
使用node.js搭建服务器
May 20 #Javascript
layui表格实现代码
May 20 #Javascript
微信小程序新增的拖动组件movable-view使用教程
May 20 #Javascript
You might like
关于php fread()使用技巧
2010/01/22 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
Symfony生成二维码的方法
2016/02/04 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
Python实现针对中文排序的方法
2017/05/09 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
python 常见的排序算法实现汇总
2020/08/21 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
酒店拾金不昧表扬信
2014/01/18 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
2015年财政所工作总结
2015/04/25 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python