es6Promise及小程序Promise用法
本文主要说一下Promise,Prepending(进行时),Resolve(成功了),Reject(失败了),then在小程序中的实际应用
关于promise的介绍什么的就不说了网上一搜一大堆,这里只说他的实际应用的代码
var promise = new Promise(function(resolve, reject) {
// ... some code
if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
上面给出的是promise的写法我们一般写的时候会在一个方法中去写,下面我就贴出他的实际应用的代码(需要往下传递参数的写法)
App({
onLaunch: function () {
this.xuexi();
},
xuexi:function(){
this.test()
.then(jj =>{
//这里是将test方法中resolve返回值赋值给下一个方法,
//在这里可以对数据进行判断是否继续进行
return this.runAsync1(jj);
})
.then(hh =>{
//这里是将runAsync1方法中resolve返回值赋值给下一个方法
return this.runAsync2(hh);
})
.then(mm =>{
//这里是将runAsync2方法中resolve返回值赋值给下一个方法
this.runAsync3(mm);
})
}
test: function(){
var p = new Promise(function (resolve, reject) {
setTimeout(function () {
//注意:一旦你把promise的状态定义了哪他的状态就不会再改变.
//比如我这里先写的resolve下面又跟着写了reject,
//reject的代码会执行但是promise的状态是不会变的就是reject
resolve("调用成功");
reject("调用失败");
}, 5000);
})
return p;
},
runAsync1 :function(jj){
var p = new Promise(function (resolve, reject) {
//做一些异步操作
setTimeout(function () {
console.log(jj);
resolve("测试的数据1");
}, 3000);
});
return p;
},
runAsync2: function (hh) {
var p = new Promise(function (resolve, reject) {
//做一些异步操作
setTimeout(function () {
console.log(hh);
resolve('随便什么数据2');
}, 2000);
});
return p;
},
runAsync3: function (mm) {
var p = new Promise(function (resolve, reject) {
//做一些异步操作
setTimeout(function () {
console.log(mm);
// resolve('随便什么数据6');
}, 2000);
});
return p;
},
})
不需要传递参数的写法就是等待一个完成了就进行下一个的写法
App({
onLaunch: function () {
this.xuexi();
},
xuexi:function(){
//只是等待上一个完成后就进行下一个不关心上一个的状态,没有数据的交互
this.test()
.then(this.runAsync1);
.then(this.runAsync2);
.then(this.runAsync3);
}
test: function(){
var p = new Promise(function (resolve, reject) {
setTimeout(function () {
//注意:一旦你把promise的状态定义了哪他的状态就不会再改变.
//比如我这里先写的resolve下面又跟着写了reject,reject的代码会执行但是promise的状态是不会变的就是reject
resolve("调用成功");
reject("调用失败");
}, 5000);
})
return p;
},
runAsync1 :function(jj){
var p = new Promise(function (resolve, reject) {
//做一些异步操作
setTimeout(function () {
console.log(jj);
resolve("测试的数据1");
}, 3000);
});
return p;
},
runAsync2: function (hh) {
var p = new Promise(function (resolve, reject) {
//做一些异步操作
setTimeout(function () {
console.log(hh);
resolve('随便什么数据2');
}, 2000);
});
return p;
},
runAsync3: function (mm) {
var p = new Promise(function (resolve, reject) {
//做一些异步操作
setTimeout(function () {
console.log(mm);
// resolve('随便什么数据6');
}, 2000);
});
return p;
},
})
建议一个promise后面跟随一个catch去捕捉promise内部产生的错误
参考 : https://www.cnblogs.com/fps2tao/p/10141187.html
转: https://www.jianshu.com/p/acbc8986903a
es6Promise及小程序Promise用法的更多相关文章
- 小程序Promise不支持finally解决方案
小程序Promise不支持finally解决方案 代码片段 点击链接即可在微信开发者工具中查看代码wechatide://minicode/t2eidemj7P3X git地址 基本思路 小程序的Pr ...
- 微信小程序 - promise(get\post)
部分源码来自于http://www.wxapp-union.com/home.php?mod=space&uid=17761,就是小程序社区 , 参考以及借鉴一些类似cnblog,csdn上的 ...
- 微信小程序Promise对象
Promise 对象 Promise 的含义 基本用法 Promise.prototype.then() Promise.prototype.catch() Promise.prototype.fin ...
- 小程序-promise封装小程序的请求方法
// 在utils-->base.js中,封装一个Base类,有一个axios方法 class Base{ constructor(){ } axios(method,url,data){ co ...
- 小程序Promise
/** 异步函数回调简化处理 const promisify = require('./promisify') const getSystemInfo = promisify(wx.getSystem ...
- 小程序websocket用法
// socket已经连接成功 var socketOpen = false // socket已经调用关闭function var socketClose = false // socket发送的消 ...
- 微信小程序 weui 使用方法
https://github.com/Tencent/weui-wxss/ 下载地址用于小程序的https://github.com/Tencent/weui 下载地址用于H5 运用示例 ...
- [组件封装]微信小程序-图片批量上传照片墙
描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...
- 在微信小程序的JS脚本中使用Promise来优化函数处理
在我们传统的Javascript开发函数编写中,我们习惯了回调函数的处理,不过随着回调函数的增多,以及异步处理的复杂性等原因,代码越来越难读,因此诞生了使用Promise来优化JS函数处理的需求,引入 ...
随机推荐
- C++ 推断一棵二叉树是否对称
一棵二叉树对称,就是说它假设以根为轴,翻转过去一样.例如以下图所看到的,以虚线为轴.把左边翻转到右边,各顶点及顶点中的值一一相应. watermark/2/text/aHR0cDovL2Jsb2cuY ...
- Pig拒绝连接错误
运行Pig时出现错误: Pig Stack Trace --------------- ERROR 1066: Unable to open iterator for alias visit. Bac ...
- AppScan--图解Web扫描工具IBM Security App Scan Standard
App Scan用法: 首先打开IBM Security AppScan Standard 工具 点击 创建新的扫描 -> 点击”常规扫描“ ->之后你就会看到如下图: ...
- MySQL 主从错误
1: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log fil ...
- sell 项目 订单表 设计 及 创建
1.数据库设计 2.订单表 创建 /** * 订单表 */ create table `order_master` ( `order_id` varchar(32) not null, `buyer_ ...
- ReactNative调用aar文件(附:如何打开、查看aar文件内容)
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7275897.html ReactNative可以用来进行一些嵌入式设备的操作终端开发,比如:ATM机.自动售卖 ...
- Mongodb下载地址
通过官网https://www.mongodb.com/访问下载页面点击下载一直不能成功,通过如下的链接可以直接下载所有版本的安装文件. windows版本下载地址:http://dl.mongodb ...
- Axure 实现批量的勾选和反选
百度网盘:http://pan.baidu.com/s/1gf4RR2b 1.如何实现批量的勾选和反选的操作? 2.步骤 1)创建3个复选框.2个按钮(全选/反选) 2)设置全选按钮点击事件——选中“ ...
- Spring Boot 在IDEA中debug时的hot deployment(热部署)
因为Spring Boot的项目一般会打包成jar发布, 在开发阶段debug时, 不能像传统的web项目那样, 选择exploded resources进行debug, 也没有热更新按钮, 如果每次 ...
- 递归查询构造jquery tree
1 现在有如下的一张表: CREATE TABLE [dbo].[ThemeCategory] ( [ID] [int] NOT NULL, [ThemeCategoryName] [nvarchar ...